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