快速排序菜鳥python python實現快速排序

2021-10-13 02:10:36 字數 839 閱讀 6031

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 ...