Python实现快速排序算法
快速排序有多种实现方式,最容易理解得是:分治 + 迭代,只需要四步:
-
在数列之中,任意选择一个元素作为基准或比较值
-
数列中其他所有元素都和这个基准值进行比较:小的移到基准值的左边,大的移到基准值的右边
-
以基准值左右两边的子列作为新数列,进行递归排序,直到所有分区内最多一个元素为止
-
分解完成再一层一层返回,返回规则是:左边分区 + 基准值 + 右边分区
python 实现:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def quick_sort(data):
if len(data) >= 2:
# 选取第一个元素为基准值
pivot = data[0]
# 定义基准值左右两侧的列表
left, right = [], []
# 从原始数组中移除基准值
data.remove(pivot)
for num in data:
if num >= pivot:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [pivot] + quick_sort(right)
else:
return data
array = [23,36,15,17,3,94,36,145,45,5,47,45,8,35,8]
print(quick_sort(array))
注意:
-
采用分治方式的快速排序算法在处理大数据集性能较好,小数据集性能一般
-
对于小数组,插入排序更快。或者根据实际情况采用三取样切分和熵最优的排序。
----
作者:快乐随行
著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明原文作者及出处。
许可: CC BY-SA 4.0
----