快排(QuickSort)是很實用的算法,好用就好用在一個“快”字,而且它採用的是分治的策略,分治顧名思義就是“分而治之”,把一個大問題分成很多小問題逐個去解決,這個思想在處理大數據時相當有效,更詳細通俗的原理解析請看這裏。
直接貼代碼:
def partition(sort_list, left, right): key = sort_list[left] while left < right : while left < right and sort_list[right] >= key : right -= 1 if left < right and sort_list[right] < key: sort_list[left] = sort_list[right] left += 1 while left < right and sort_list[left] >= key: left += 1 if left < right and sort_list[left] < key: sort_list[right] = sort_list[left] right -= 1 sort_list[left] = key return left def quickSort(sort_list, left, right): if left < right : i = partition(sort_list, left, right) quickSort(sort_list, left, right-1) quickSort(sort_list, left+1, right) return sort_list
這段代碼可以整合成一個函數,大家可以自行優化。代碼以第一個元素爲初始基準,採用遞歸的方法實現。值得一提的是,雖然遞歸是效率相對較低的方法,但是可以讓代碼結構清晰易懂,而且分治策略的算法大部分都用遞歸實現。