python實現快速排序
快速排序
基本原理
選擇待排序列第乙個元素作為參照點,將列表分為左右兩個列表,左列表元素均比參照點小,右列表元素均比參照點大,然後遞迴左右兩個列表。
**# -*- coding: utf-8 -*-
基本思想:
選擇待排序列中乙個數字,將列表分為左右兩個列表,左邊比數小,右邊比數大。
然後遞迴呼叫。
def quick_sort(input_list):
if len(input_list) <= 1: # 長度為1則直接返回
return input_list
left =
right =
for ele in input_list[1:]: # 迴圈裡面的元素
if ele>=input_list[0]: # 若當前元素》第乙個數字
else: # 若當前元素
return quick_sort(left) + [input_list[0]] + quick_sort(right)
if __name__ == '__main__':
pre_list = [1,6,3,3,7]
res = quick_sort(pre_list)
print(res)
**由於涉及到遞迴,可能直觀上不好理解。於是在次貼出一張手寫圖。字爛。
不過強烈建議讀者靜下心來自己繪製一遍。
易忘點和易錯點
a. 不要忘記列表 長度為1 的情況。
b. 在return語句中,由於使用 + 號合併多個list,因此需要將參照點也轉成乙個 list 。即 [input_list[0]] 。
菜鳥快速學習SEO
現在很多企業開始重視 優化,seo人員也開始多了起來rfguab,正因為seo的門檻太低了,所以使得這個行業太過氾濫,我也曾面試過幾家公司,都說到 我們這招seo,試用期工資都不高,具體的薪資轉正的時候根據你的實力來判定。每次都是這樣的話,使得我都寒心了,兩年多的seo經驗,還是被誤以為初學者。什麼...
遞迴 快速排序 快速排序
問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...
排序 快速排序
快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...