Python实现快速排序

2025-05-07 10:08:15

1、打开Python开发工具IDLE,新建‘快排.py’文件,并写代码如下:def kuaipai(list1): n = len(list1) low = 0 high = n-1 mid = list1[low] while low<high: while low<high and list1[high]>=mid: high-=1 list1[low]=list1[high] while low<high and list1[low]<mid: low+=1 list1[high]=list1[low] list1[low]=midif __name__ == '__main__': list1 = [8,10,6,7,9] kuaipai(list1) print (list1)列表第一个值,作为基准,小于这个值,放到左边,大于放到右边,把这个值放到中间

Python实现快速排序

2、F5运行程序,可以看到以这个值为中间,分成左右大小顺序[7, 6, 8, 10, 9]

Python实现快速排序

3、递归调要这个函数,以实现上一步分成左右分组继续排序,代码如下:def kuaipai(list1,start,end): low = st锾攒揉敫art high = end mid = list1[low] while low<high: while low<high and list1[high]>=mid: high-=1 list1[low]=list1[high] while low<high and list1[low]<mid: low+=1 list1[high]=list1[low] list1[low]=mid kuaipai(list1,start,low-1) kuaipai(list1,low+1,end)if __name__ == '__main__': list1 = [8,7,6,9] kuaipai(list1,0,len(list1)-1) print (list1)这样实现了左右两边再递归调用快排

Python实现快速排序

4、F5运行程序,程序报错了,这是因为递归没有结束条件。RecursionError: maximum recursion depth exceeded in comparison

Python实现快速排序

5、继续改写代码,为递归找一个结束条件,结束条件就是已经排好序,排好序时左右移动的low和high重叠的一定实在一个端点。即一个一次也没有移动,一个移动到头。改写代码如下:def kuaipai(list1,start,end): if start>=end: return low = start high = end mid = list1[low] while low<high: while low<high and list1[high]>=mid: high-=1 list1[low]=list1[high] while low<high and list1[low]<mid: low+=1 list1[high]=list1[low] list1[low]=mid kuaipai(list1,start,low-1) kuaipai(list1,low+1,end)if __name__ == '__main__': list1 = [8,7,6,9] kuaipai(list1,0,len(list1)-1) print (list1)

Python实现快速排序

6、F5运行程序,快速排序成功[6, 7, 8, 9]

Python实现快速排序
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:34
  • 阅读量:50
  • 阅读量:62
  • 阅读量:75
  • 阅读量:91
  • 猜你喜欢