test_list = [49, 38, 65, 78, 20, 9, 100, 77, 62, 34]
def once_sort(array, lef, rig):
"""
:param array: 数组,列表
:param lef: 最左侧索引
:param rig: 最右侧索引
:return: 基准所在位置
"""
# 基准
base = array[lef]
# lef=rig时会结束循环
while lef < rig:
# 从右到左,找到第一个小于等于基准的数,并array[rig]赋值给array[lef]
while lef < rig and array[rig] > base:
rig -= 1
if lef < rig:
array[lef] = array[rig]
# 从左到右, 找到第一个大于基准的数,并将array[lef]赋值给array[rig]
while lef < rig and array[rig] <= base:
lef += 1
if lef < rig:
array[rig] = array[lef]
# lef=rig时将基准赋给索引所在位置
array[lef] = base
# 返回索引
return lef
def quick_sort(array, low, high):
if low < high:
index = once_sort(array, low, high)
# 递归排序基准左侧
quick_sort(array, low, index-1)
# 递归排序基准右侧
quick_sort(array, index+1, high)
quick_sort(test_list, 0, 9)
print(test_list)
python简单实现快速排序
最新推荐文章于 2021-09-03 14:23:36 发布