新聞中心
運(yùn)作過程

成都創(chuàng)新互聯(lián)公司成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元南木林做網(wǎng)站,已為上家服務(wù),為南木林各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
1、從數(shù)列中挑出一個元素,稱為基準(zhǔn),重新排序數(shù)列,所有元素比基準(zhǔn)值小的擺放在基準(zhǔn)前面。
所有元素比基準(zhǔn)值大的擺在基準(zhǔn)的后面(相同的數(shù)可以到任一邊)。在這個分區(qū)結(jié)束之后,該基準(zhǔn)就處于數(shù)列的中間位置。這個稱為分區(qū)操作。
2、小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序。
3、遞歸的最底部情形,是數(shù)列的大小是零或一。
也就是永遠(yuǎn)都已經(jīng)被排序好了。雖然一直遞歸下去,但是這個算法總會結(jié)束,因為在每次的迭代中,它至少會把一個元素擺到它最后的位置去。
實例
# 快速排序-遞歸 def quick_sort(alist, begin, end): # 遞歸的終止條件是begin >= last,即數(shù)組大小為1或0 # 遞歸終止時,數(shù)組已經(jīng)排好序了 if begin >= end: return else: # 以開頭的值作為基準(zhǔn)值,然后以基準(zhǔn)值為界將數(shù)組分區(qū),將分區(qū)后的左右兩部分繼續(xù)調(diào)用快速排序函數(shù) mid_value = alist[begin] low = begin high = end # 分別從右往左尋找小于基準(zhǔn)值的值,從左往右尋找大于基準(zhǔn)值的值 while low < high: # 從右往左尋找小于基準(zhǔn)值的值 while low < high and alist[high] >= mid_value: high -= 1 alist[low] = alist[high] # 從左往右尋找大于基準(zhǔn)值的值 while low < high and alist[low] < mid_value: low += 1 alist[high] = alist[low] # 循環(huán)結(jié)束時,low == high,這個位置正是基準(zhǔn)點(diǎn)的位置 alist[low] = mid_value # 對low左邊的元素執(zhí)行快速排序 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快速排序的運(yùn)作過程,希望對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
本文名稱:創(chuàng)新互聯(lián)Python教程:python快速排序的運(yùn)作過程
文章出自:http://m.5511xx.com/article/cossccc.html


咨詢
建站咨詢
