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来完成两个操作.
快速排序用了一个遍历, 但是因为有用到递归.
除了使用一个变量外, 还用了两个列表.
快速排序的空间性能并不算优秀.相较于其他算法, 最大的优势在于速度快.