本文实例讲述了Python实现快速排序的方法。分享给大家供大家参考,具体如下:
说起快排的Python实现,首先谈一下,快速排序的思路:
1,取一个参考值放到列表中间,初次排序后,让左侧的值都比他小,右侧的值,都比他大。
2,分别对左侧和右侧的部分递归第1步的操作
<>强实现思路:强>
-
<李>两个指针左、右分别指向列表的第一个元素和最后一个元素,然后取一个参考值,默认为第一个列表的第一个元素[0]名单,称为K 李>
<李>然后左指向的值先和参考K值进行比较,若列表(左)小于或等于K值,离开就一直向右移动,左+ 1,直到移动到大于K值的地方,停住李>
<李>右指向的值和参考K值进行比较,若列表(右)大于K值,正确的就一直向左移动,右一,直到移动到小于K值的地方,停住李>
<李>此时,左和右若还没有相遇,即左还小于正确,则二者指向的值互换李>
<李>若已经相遇则说明,第一次排序已经完成,将列表[右]与[0]的值进行互换,进行之后的递归李>
<强>编程实现:强>
#快排的主函数,传入参数为一个列表,左右两端的下标 def快速排序(列表、低、高): 如果比高;低: #传入参数,通过分区函数,获取k下标值 k=分区(列表、低、高) #递归排序列表k下标左侧的列的表 快速排序(列表、低k - 1) #递归排序列表k下标右侧的列的表 快速排序(列表,k + 1,高) def分区(列表、低、高): 左=低 正确的=高 #将最左侧的值赋值给参考值k k=列表(低) #当离开下标,小于权利下标的情况下,此时判断二者移动是否相交,若未相交,则一直循环 而左& lt;正确的: #当左对应的值小于k参考值,就一直向右移动 当列表(左)& lt;=k: 左+=1 #当正确的对应的值大于k参考值,就一直向左移动 列表(右)比;凯西: 右=- 1 #若移动完,二者仍未相遇则交换下标对应的值 如果左& lt;正确的: 列表(左),[右]=[右]列表,列表(左) #若移动完,已经相遇,则交换正确的对应的值和参考值 列表(低)=(右) 列表[右]=k #返回k值 返回正确的 list_demo=[6、1、2、7、9、3、4、5、10、8] 打印(list_demo) 快速排序(list_demo 0 9) 打印(list_demo) >之前运行结果:
[6、1、2、7、9、3、4、5、10、8]
引用>
(1,2,3,4,5,6,7,8,9,10)http://tools.jb51.net/aideddesign/paixu_ys
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python列表(列表)操作技巧总结》,《Python编码操作技巧总结》,《Python函数使用技巧总结》,《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
Python实现快速排序的方法详解