Python3 資料結構之希爾排序

2021-09-02 17:49:31 字數 996 閱讀 9270

希爾排序(shell sort)

演算法描述:

step1:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序。

step2:依次縮減增量再進行排序。

step3:待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。

演算法結束。

因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序相較於前幾種方法有較大的提公升。

ps:學資料結構和演算法最好的方法就是**,能看懂圖,就別看繁瑣的文字描述,看不懂圖,再結合文字描述看懂,演算法也就學會了

注:這種寫法插入排序時使用了交換法

希爾演算法的關鍵就是掌握縮小增量序列,即(希爾增量),其平均時間複雜度為o(nlogn),最壞時間複雜度依然為o(n^2),一些經過優化的增量序列如hibbard經過複雜證明可使得最壞時間複雜度為o(n^1.5)。

穩定性:不穩定

[1] 

[2] 

Python3 資料結構之遞迴

遞迴 def fact x if x 1 return 1 else return x fact x 1 tail recursion 尾遞迴 def tail recusion x,total 1 if x 1 return total else return tail recusion x 1,...

Python3 資料結構

python中列表是可變的,這是它區別於字串和元組的最重要的特點,一句話概括即 列表可以修改,而字串和元組不能。列表的基本特點 操作 描述把乙個元素新增到列表的結尾,相當於 a len a x list.extend l 在列表末尾新增多個物件,引數可謂迭代物件相當於 a len a l list....

Python3 資料結構之快速排序

然後使用快速排序使用了分而治之 divide and conquer,d c 的思想 主要思想就是把乙個無序陣列分為3個部分 遞迴的思想重複以上步驟 參考演算法 給出的 quicksort def quick sort arr if len arr 2 return arr else pivot a...