运作过程
1、从数列中挑出一个元素,称为基准,重新排序数列,所有元素都放在基准前面,比基准值小。
所有比基准值大的元素都放在基准值后面(相同的数字可以到达任何一侧)。分区结束后,基准处于几列的中间位置。这叫分区操作。
2、小于基准值元素的子数列和大于基准值元素的子数列排序。
3、递归的底部情况是数列的大小为零或一。
也就是说,它总是被排序好的。虽然它已经递回,但算法总是会结束,因为在每次迭代中,它至少会把一个元素放在它的最后位置。
实例
#快速排序-递归 defquick_sort(alist,begin,end): #递归的终止条件是begin>=last,即数组大小为1或0 #递归终止时,数组已经排好了序列 ifbegin>=end: return else: #以开头值为基准值,然后以基准值为边界对数组进行分区,继续调用分区后左右两部分的快速排序函数 mid_value=alist[begin] low=begin high=end #从右到左寻找小于基准值的值,从左到右寻找大于基准值的值 whilelow<high: #从右到左寻找小于基准值的值 whilelow<highandalist[high]>=mid_value: high-=1 alist[low]=alist[high] #从左到右寻找大于基准值的值 whilelow<highandalist[low]<mid_value: low+=1 alist[high]=alist[low] #循环结束时,low==high,这个位置是基准点的位置 alist[low]=mid_value #快速排序Low左侧的元素 quick_sort(alist,begin,low-1) quick_sort(alist,low+1,end) if__name__='__main__': alist=[54,26,93,17,77,31,44,55,20] print(alist) quick_sort(alist,0,len(alist)-1) print(alist)
以上是python快速排序的操作过程,希望对大家有所帮助。更多Python学习指导:基础教程python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。