# 快速排序 # 快速排序又称划分交换排序,通过一轮排序,将要排序的数据,分割成2部分,一部分数据比另外一部分数据都要小,然后对这2部分分别进行排序 # 步骤: # (1) 在数列中,选择一个元素,作为基准(比较值),一般都是第一个元素 # (2) 数列中数据都和基准进行比较,比基准值小的移动到左边,比基准值大的移动到右边 # (3) 以基准值左右2边的子列,作为新数列 # 不断重复第1步和第2步 def quick_sort(alist, start, end): if start >= end: return # 设置开始的基准元素 mid = alist[start] # low是数列左边开始位置由左向右移动 low = start # high是数列右边结束的位置有右向左移动 high = end while low < high: # 右边指向的元素大于等于基准元素,则high向左移动 while low < high and alist[high] >= mid: high = high - 1 # high -= -1 # 找到了比基准元素小的元素,交换位置 alist[low] = alist[high] print(alist) # 左边指向的元素小于基准元素,则low向右移动 while low < high and alist[low] < mid: low += 1 # low = low + 1 # 找到了比基准元素大的元素,交换位置 alist[high] = alist[low] print(alist) # 基准元素存放的位置 alist[low] = mid # 对基准元素左边的数列,快速排序 quick_sort(alist,start,low-1) # 对基准元素右边的数列,快速排序 quick_sort(alist,low+1,end) # 调试代码 if __name__ == '__main__': # 定义列表 alist = [99, 2, 5, 22, 1, 77, 44, 66] # 调用快速排序函数 quick_sort(alist, 0, len(alist)-1) # 输出结果 print(alist)
python-快速排序
最新推荐文章于 2024-05-14 10:51:55 发布