# -*- conding:utf-8
# @Author :Glad
# @Time: 2021/3/3 12:52
# @File:快速排序.py
def quick_sort(alist,first,last):
"""快速排序"""
# 如果下标first>=last时候,就意味着列表中要排序值个数=1,就返回
if first >= last:
return
mid_value = alist[first]
low = first
high = last
while low < high:
# hight 左移动,如果遇到的值等于设定的中间值放在high的右边,继续左移动
while low < high and alist[high] >= mid_value:
high -= 1
alist[low] = alist[high]
while low < high and alist[low] < mid_value:
low += 1
alist[high] = alist[low]
#从上面的循环退出的时候,即 low == high
alist[low] = mid_value
#对low左边的列表执行快速排序
quick_sort(alist,first,low-1)
# 对low右边的列表执行快速排序
quick_sort(alist,low+1,last)
if __name__ == '__main__':
li = [9, 8, 7, 6, 5, 4, 3, 2, 1]
print(li) #输出结果: [9, 8, 7, 6, 5, 4, 3, 2, 1]
quick_sort(li,0,len(li)-1)
print(li) #输出结果: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Python_快速排序
最新推荐文章于 2023-04-27 08:52:02 发布