從待排序列中挑出乙個元素,作為"基準"(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 單個列表快速排序函式 返回一次排序後的列表和所選取基數...