QuickSort 快速排序

# QuickSort 快速排序_Python实现


def quick_sort(li):
    if len(li) < 2:
        return li
    # 选取基准值, 一般选取第一个, 并将其从中剔除

    # mid = li[0]
    # li.remove(mid)
    mid = li.pop(0)

    # 定义左右两个数列
    left, right = [], []

    for i in li:  # 大小判断, 分别放置
        if i > mid:
            right.append(i)
        else:
            left.append(i)
    # 使用迭代, 继续进行拆分比较
    return quick_sort(left) + [mid] + quick_sort(right)


list = [1, 55, 98984, 65, 165, 356, 54, 3, 645, 74, 64, 35]

li = quick_sort(list)
print(li)

  

 

快速排序:

快速排序采用的是分而治之的方法.随便取一个值,
然后把列表中所有的值与之对比, 大的放在一起, 小的放在一起.
然后使用递归, 将分好的列表继续分下去,直到无法再分. 依次返回便是排序好的列表.
快速排序是内部排序中非常不错的选择.

注意点:

因为使用递归, 所以需要在函数开始进行列表判断, 是否满足继续分下去的条件(是不是最起码有两个元素)
取基准值的时候, 可以随便取, 但在取之后需要将基准从列表中移除. 此处使用pop来完成两个操作.
快速排序用了一个遍历, 但是因为有用到递归.
除了使用一个变量外, 还用了两个列表.
快速排序的空间性能并不算优秀.相较于其他算法, 最大的优势在于速度快.

posted @ 2019-12-26 01:23  Jrri  阅读(328)  评论(0编辑  收藏  举报