內排序 插入類排序 希爾排序

2021-07-15 22:23:39 字數 753 閱讀 6916

希爾排序:內排序   插入類排序   不穩定  的排序,平均時間複雜度o(nlogn)~o(n^2)

希爾排序的原理:希爾排序是對直接插入排序的一種改進,減小了時間複雜度,希爾排序又稱減小增量排序。將待排序列按照增量 d 分成若干子串行,對子序列進行直接插入排序。然後減小增量d,將序列再分為若干子串行,再對子序列進行直接插入排序。待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。

d的第一次選取d=n/2,第二次取d/2,直到d=1

舉例:10,5,7,25,30,48,21,3

第一趟排序:

選取d=8/2=4 分組

10,5

,7,25

,30,48

,21,3

排序後10,5,7,3,30,48,21,25

第二趟排序:

選取d=4/2=2 分組

10,5,7,3,30,48,21,25

排序後7,3,10,5,21,25,30,48

第三趟排序:

選取d=2/2=1

d=1時,就是對整個序列直接插入排序,直接插入排序對基本有序序列排序具有較高的效率。

排序後3,5,7,10,21,25,30,48

排序 插入排序,希爾排序

基本思想 每一步將乙個待排序的元素,按其排序碼的大小,插入到前面已經排好序的序列的合適位置上,直到元素全部插入完畢。直接插入排序 空間複雜度 o 1 時間複雜度 o n n 穩定性 穩定 使用場景 對於一組有序的序列,想插入乙個資料。插入排序的優化 使用二分查詢找到合適的插入位置 折半插入排序 vo...

插入排序 希爾排序

我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...

插入排序 希爾排序

希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 4938 6597 2613 2749554 ...