手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Python实现快速排序

时间:2024-11-01 16:55:33

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实现快速排序
© 手抄报圈