python 實現快速排序

2022-04-02 23:25:30 字數 1448 閱讀 8313

從待排序列中挑出乙個元素,作為"基準"(pivot),通過一趟排序,把所有比基準值小的元素放在基準前面,所有比基準值大的元素放在基準的後面(相同的數可以到任一邊),這個稱為分割槽(partition)操作。對前後兩個區間重複此操作,直到前後分割槽的帶下是0或1結束。每一次都確定待排序列中乙個元素的位置。

def quicksort(input_list, left, right):

def divsion(input_list, left, right):

# pivot為基準

# pivot = input_list[left]

while left < right:

while left < right and input_list[right] >= input_list[left]:

right -= 1

# 找到乙個元素小於基準元素,則把該元素放在前面

t=input_list[left]

input_list[left] = input_list[right]

input_list[right]=t

while left < right and input_list[left] <= input_list[right]:

left += 1

# 找到乙個元素大於基準元素,則把該元素放到後面

t = input_list[right]

input_list[right] = input_list[left]

input_list[left]=t

# 當left = right,即此時,left位置的左邊都比基準元素小,

# left元素右邊都比基準元素大,此時把基準元素放入該位置,

# 即該位置就是基準元素的最終排序位置

return left

if left < right:

pivot_index = divsion(input_list, left, right)

print("每執行本次分割槽後的結果:")

print(input_list)

# 用分治法對待排元素的左右兩邊分別遞迴進行quicksort

quicksort(input_list, left, pivot_index - 1)

quicksort(input_list, pivot_index + 1, right)

if __name__ == '__main__':

input_list = [50, 123, 543, 187, 49, 30, 0, 2, 11, 100]

print("input_list:")

print(input_list)

quicksort(input_list, 0, len(input_list) - 1)

print("sorted_list:")

print(input_list)

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 單個列表快速排序函式 返回一次排序後的列表和所選取基數...