經過上一章對分而治之思想和遞歸的思考,這裏我正式開始來研究快速排序
快速排序有非常明顯的分而治之的思想在其中,首先我們來對一個列表進行排序,對排序算法來說,最簡單的列表是怎麼樣的呢?那就是根本不需要排序的數組
如果一個列表是空的或者是隻有一個數,根本不用排序
def quicksort(array):
if len(array)<2:
return array
只有兩個元素的也很簡單,直接進行比較就行了
那麼有三個元素呢,當然我們依然可以使用循環進行比較
def sort(array):
for i in range(len(array)):
for j in range(len(array) - 1):
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j]
return array
當然,這樣計算的速度是非常慢的,在計算長數據的時候由於要遍歷每一個數而導致效率地下,所以現在我們使用快速排序來解決這個問題
def quicksort(array):
if len(array)<2:
return array
else:
pivot=array[0]
less=[i for i in array[1:] if i<=pivot]
greater=[i for i in array[1:] if i>pivot]
print(array)
print(less)
print(greater)
return quicksort(less)+[pivot]+quicksort(greater)
我先把代碼貼出來