快速排序 python

第一次写,编程算法能力太差,可能程序过于复杂臃肿,希望通过以后的学习,再回头看可以进行修改精简。

'''
先从待排序序列中选出一个数作为基准,然后对除该数外的其它数进行分区,小于该数的排在其左边,大于的放在右边,按顺序放即可,不在意大小顺序。
分区之后,新序列分为三部分,[小于基准,基准,大于基准],然后再对基准两侧序列分别进行上述操作,直至待分区的子序列只有一个数位置。
完成排序。
'''
def toSort(list):
    temp = list[0]
    temp_list_left = []
    temp_list_right = []
    for i in list[1:]:
        if i <= temp:
            temp_list_left.append(i)
        else:
            temp_list_right.append(i)
    return temp_list_left, temp, temp_list_right

###########################这三个QuickSort都可以##############################################
def QuickSort(list, final_list):
    temp_list_left, temp, temp_list_right = toSort(list)
    if len(temp_list_left) >= 2:
        final_list = QuickSort(temp_list_left, final_list)
    elif len(temp_list_left) > 0:
        final_list = final_list + temp_list_left + [temp]
        return final_list
    final_list = final_list + [temp]
    if len(temp_list_right) >= 2:
        final_list = QuickSort(temp_list_right, final_list)
        return final_list
    else:
        final_list = final_list + temp_list_right
        return final_list

# def QuickSort(list):
#     final_list = []
#     temp_list_left, temp, temp_list_right = toSort(list)
#     if len(temp_list_left) >= 2:
#         temp_list = QuickSort(temp_list_left)
#         final_list.extend(temp_list)
#     elif len(temp_list_left) > 0:
#         final_list.extend(temp_list_left+[temp])
#         return final_list
#     final_list.extend([temp])
#     if len(temp_list_right) >= 2:
#         temp_list = QuickSort(temp_list_right)
#         final_list.extend(temp_list)
#         return final_list
#     else:
#         final_list.extend(temp_list_right)
#         return final_list

def QuickSort(lists):
    final_list = []
    temp_list_left, temp, temp_list_right = toSort(lists)
    for ele in (temp_list_left, temp, temp_list_right):
        if isinstance(ele, list):
            if len(ele) >= 2:
                temp_list = QuickSort(ele)
            else:
                temp_list = ele
            final_list.extend(temp_list)
        else:
            final_list.extend([temp])
    return final_list
#################################################################################
a = [12, 34, 15, 2, 45, 48, 231, 5, 13, 89]
final_list = []
final_list = QuickSort(a, final_list)
print(final_list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值