本文目錄一覽:
python實現快速排序(QuickSort)
快速排序使用分治法來把一個串(list)分為兩個子串(sub-lists)。具體算法描述如下:
註:遞歸到最底部的判斷條件是數列的大小是零或一,此時該數列顯然已經有序。
選取基準值有數種具體方法,此選取方法對排序的時間性能有決定性影響。
想了解其他排序相關算法可以,看作者的 排序算法專欄 。
如果喜歡作者,歡迎點贊、收藏及關注,謝謝!
點擊下面相應的鏈接即可查看各個算法的詳細介紹及python實現方法 :
Python實現的快速排序算法詳解
Python實現的快速排序算法詳解
本文實例講述了Python實現的快速排序算法。分享給大家供大家參考,具體如下:
快速排序基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
如序列[6,8,1,4,3,9],選擇6作為基準數。從右向左掃描,尋找比基準數小的數字為3,交換6和3的位置,[3,8,1,4,6,9],接着從左向右掃描,尋找比基準數大的數字為8,交換6和8的位置,[3,6,1,4,8,9]。重複上述過程,直到基準數左邊的數字都比其小,右邊的數字都比其大。然後分別對基準數左邊和右邊的序列遞歸進行上述方法。
實現代碼如下:
def parttion(v, left, right):
key = v[left]
low = left
high = right
while low high:
while (low high) and (v[high] = key):
high -= 1
v[low] = v[high]
while (low high) and (v[low] = key):
low += 1
v[high] = v[low]
v[low] = key
return low
def quicksort(v, left, right):
if left right:
p = parttion(v, left, right)
quicksort(v, left, p-1)
quicksort(v, p+1, right)
return v
s = [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6]
print(“before sort:”,s)
s1 = quicksort(s, left = 0, right = len(s) – 1)
print(“after sort:”,s1)
運行結果:
before sort: [6, 8, 1, 4, 3, 9, 5, 4, 11, 2, 2, 15, 6]
after sort: [1, 2, 2, 3, 4, 4, 5, 6, 6, 8, 9, 11, 15]
python 快速排序實現的具體代碼,以及講解。我是小白還請講清楚一點,謝謝了。
快速排序:在數組L中選一個數叫支點Pivot,把數組L中所有比支點小的數放在支點的左邊;比支點大的數放在支點右邊..;然後分別對左、右兩個新數組重新各選一個支點,重複之前的排法,直到左、右只剩下一個數不用再分。經過這樣的過程後,整個數組L就被從小到大排好了.
qsort()是排序的實現。qsort(數組,起點序號,終點序號);內容是由partition分好一輪後再分別排左、右子數組。
partition()是選支點,並分配數給左右和區分左右的過程。
原創文章,作者:TRDP,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/148179.html