python實現快速排序

2021-08-16 09:38:43 字數 1565 閱讀 2137

# coding:utf-8

# 實現對列表中的數進行快速排序

importrandom

# 隨機生成乙個有1000整數的列表

number = [random.randint(1

,1000)foriinrange(1000)]

# 列印原始列表

printnumber

# 單個列表快速排序函式(返回一次排序後的列表和所選取基數的位置)

defpaixu(listnumber

, i, j, k):

whilei <= j:

whilei <= j:

ifnumber[j] < number[k]:

number[j], number[k] = number[k], number[j]

k = j

j -= 1

breakelse:

j -= 1

whilei <= j:

ifnumber[i] > number[k]:

number[i], number[k] = number[k], number[i]

k = i

i += 1

breakelse:

i += 1

returnnumber, k

# 主函式

if__name__ == '__main__':

start_end_list = # 儲存左右列表區間

,len(number)-1))

start_end_list_temp =

# 遍歷,直至各個列表區間左右部分相同

whilestart_end_list:

foriinstart_end_list:

ifi[0] == i[1]:

continuenumber, k = paixu(number,i[0],i[1],i[0])

ifi[0] <= k-1:

ifk+1

<= i[1]:

,i[1]))

start_end_list = start_end_list_temp

start_end_list_temp =

# 輸出快速遍歷後的列表

printnumber

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 實現快速排序

參考的部落格 from future importprint function a 72,6,57,88,60,42,83,73,48,85 defquick sort a,l,r ifl 取得基數 whileindexi indexj whileindexi indexjanda indexj x...