4 4 python 快速排序實現

2021-10-01 13:49:35 字數 1345 閱讀 7564

思想:

第一步 : 假設 列表第乙個元素為 列表的中間元素,頭指標(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 單個列表快速排序函式 返回一次排序後的列表和所選取基數...