快速排序 递归

快速排序的逻辑

用递归的方法:

1 边界条件,数组长度为1,返回list

2 list =( list_left )+ ( mid ) +( list_right )

注意个细节,mid是一个元素值,不是下标

 

# 快速排序
def quick_sort(l):
    if len(l) < 2:
        return l
    # 先取一个中间值
    mid = l.pop(len(l) // 2)
    left = []  # 存放小于m的数
    right = []  # 存放大于m的数
    for n in l:
        if n < mid:
            left.append(n)
        else:
            right.append(n)
    # print('left:',left)
    # print('right:',right)
    # 递归
    return quick_sort(left) + [mid] + quick_sort(right)  # 次一级的通项,公式,最重要


ll = [4, 5, 9, 7, 6, 8, 2, 1, 3]
print(quick_sort(ll))

  

上一篇:*排序算法


下一篇:LeetCode215. 数组中的第K个最大元素