python递归实现快排算法
快速排序算法,简称快排,是最实用的排序算法,没有之一,各大语言标准库的排序函数也基本都是基于快排实现的。
快排的原理是将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
代码如下:
def get_index_sort(array, start, end):
# 定义基准数, 比基准数大的放在右边, 比基准数小的放在左边
key = array[start]
while start < end:
# 从右开始比基准数大的位置不变
while start < end and array[end] >= key:
end -= 1
# 比基准数小的放在左边
while start < end and array[end] < key:
array[start] = array[end]
# 从左继续判断
start += 1
# 将下一个元素赋值给array的end位置, 继续执行上面的代码, 反复运算
array[end] = array[start]
# 将基准数赋值给最终停止运行的列表元素, 这样初次运算达到了比基准数小的元素在列表左侧, 比
# 基准数大的元素在列表右侧
array[start] = key
# 返回停止运算的索引位置
return start
def quick_sort(array, start, end):
if start < end:
# 获取基准数索引位置
index = get_index(array, start, end)
# 比基准数小的左侧列表再次执行以上运算
quick_sort(array, start, index)
# 比基准数大的右侧列表再次执行以上运算
quick_sort(array, index + 1, end)
if __name__ == '__main__':
uuu = [5, 6, 7, 9, 8, 4]
quick_sort(uuu, 0, len(uuu) - 1)
print(uuu)
# uuu = [4, 5, 6, 7, 8 ,9]
以上为快速排序的递归实现方法, 个人理解, 有错误的地方希望留言提出建议及意见.
PS: 如果有用请点一个赞吧0.0