思想:
第一步 : 假設 列表第乙個元素為 列表的中間元素,頭指標(head)指向第乙個元素,尾指標(last)指向末尾元素。
第二步:last指標指向的元素與中間元素進行比較
————while條件:last指標指向元素大於等於中間值,last指標向前移動一位。直到不滿足條件,然後交換值(alist[head] = alist[last])
————while條件:head指標指向元素小於中間值,head指向向後移動一位,直到不滿足條件,然後交換值(alist[last] = alist[head])
————head指標和last指標重合,將中間值(middle_vlaue)賦值給head指標指向的位置
————完成上述步驟,middle_value左邊的值都小於middle_value,右邊的值都大於middle_value。
————採用遞迴的方式,對左右區間的元素進行排序。
def
quick_sort
(alist,start_index,end_index)
:if start_index > end_index:
return
middle_value = alist[start_index]
head = start_index
last = end_index
while head < last:
while head< last and alist[last]
>= middle_value:
last -=
1 alist[head]
= alist[last]
while head < last and alist[head]
< middle_value:
head +=
1 alist[last]
= alist[head]
alist[head]
= middle_value # alist[last] = middle_value
quick_sort(alist,start_index,head-1)
quick_sort(alist,head+
1,end_index)
if __name__ ==
'__main__'
: li =[1
,0,0
,3,4
,5,243,2
,45,55
,65,77
,45,45
,34,0
,9,0
,2,1
] quick_sort(li,0,
len(li)-1
)
python實現快速排序
快速排序的思想是任意選取要排序的list中的乙個數pivot,每次遞迴時將list按照 小於pivot的,pivot,大於pivot的 排序,再對小於和大於pivot部分分別快速排序。function quicksort list select a pivot foreach x in list i...
Python實現快速排序
快速排序的思路 numlist 6,8,1,4,3,9,5,4,11,2,2,15,6 1 設 keys 又稱為監視哨 等於 numlist 0 i等於0 j等於len numlist 1,即如下 numlist 6,8,1,4,3,9,5,4,11,2,2,15,6 keys 6 i 0 j2 1...
python實現快速排序
coding utf 8 實現對列表中的數進行快速排序 importrandom 隨機生成乙個有1000整數的列表 number random.randint 1 1000 foriinrange 1000 列印原始列表 printnumber 單個列表快速排序函式 返回一次排序後的列表和所選取基數...