標籤:and end highlight 指標 class star 選擇 中間 左右
‘‘‘快速排序通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個過程可以遞迴進行,以此達到整個資料變成有序序列‘‘‘import timestart = time.time()def quick_sort(alist, start, end): # 遞迴的允出準則 if start >= end: return # 選擇開頭第一個作為中間數 mid = alist[start] # low為序列左邊的由左向右移動的遊標 low = start # 反之 high = end ‘‘‘左右兩邊的指標都往中間移動,直到相遇‘‘‘ while low < high: # 如果low 與high 未重合, high指向的元素不比基準元素小,則high向左移動 while low < high and alist[high] >= mid: high -= 1 # 將high指向的元素放到low位置上 alist[low] = alist[high] while low < high and alist[low] < mid: low += 1 alist[high] = alist[low] # 退出迴圈後,low與high重合,此時所指位置為基準元素的正確位置 # 將基準元素放到該位置 alist[low] = mid # 對基準元素左邊的子序列進行快速排序 quick_sort(alist, start, low-1) # 對基準的右邊的子序列進行快速排序 quick_sort(alist, low+1, end)if __name__ == ‘__main__‘: alist = [5,9,3,7,1,10,4,8,2,6] quick_sort(alist,0,len(alist)-1) print(alist) end = time.time() print(end-start)
04 快速排序