python实现快速排序算法
参考资料
代码实现
"""快速排序python实现"""
# 让元素归位
def partition(input_list, start, end):
# 取列表中第一个当对照项
tmp = input_list[start]
while start < end:
"""不断重复以下操作,直到start和end索引重叠时跳出循环"""
# 从右边开始找,直到找到比对照项小的元素,然后放到左边的start索引位置
while input_list[end] >= tmp and start < end:
end = end - 1 # 向左找
# 将右边的值放到左边
input_list[start] = input_list[end]
print(f"排序中的列表input_list:{input_list}")
# 从左边开始找,直到找到比对照项大的元素,然后放在右边的end索引位置
while input_list[start] <= tmp and start < end:
start = start + 1 # 向右找
# 将左边的值放到右边
input_list[end] = input_list[start]
print(f"排序中的列表input_list:{input_list}")
# 上面循环结束,位置就已经找到了
input_list[start] = tmp
print(f"排序归位1次的列表input_list:{input_list}")
return start
def quick_sort(input_list, start, end):
global recursion_time
recursion_time = recursion_time + 1
print(f"recursion_time:{recursion_time}")
if start < end:
# 归位
mid = partition(input_list, start, end)
# 左边
quick_sort(input_list, start, mid - 1)
# 右边
quick_sort(input_list, mid + 1, end)
recursion_time = 0 # 递归次数
input_list = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(f"排序前的列表input_list:{input_list}")
quick_sort(input_list=input_list, start=0, end=len(input_list) - 1)
print(f"排序后的列表input_list:{input_list}")
本文来自博客园,作者:JaxonYe,转载请注明原文链接:https://www.cnblogs.com/yechangxin/articles/16909160.html
侵权必究