1 5插入排序 希爾排序

2021-06-26 22:24:31 字數 616 閱讀 5459

1.5插入排序-希爾排序

/*shell sort 本質為 ddiminishing increment sort*/

一.評估

不穩定的排序演算法

時間複雜度o(n^1.5)

二.思想

縮小增量分組插入排序。

基本有序時,效率高

r[0]作用:暫存器。

void shell_insertsort(int *r)

;int main()

void creat(int *r)

}void shell_insertsort(int *r)

{ int k,dk,i,j;

for( k = 0; k < 3; k ++)//縮小增量

{ dk = dlta[k];//3、2、1

for( i = dk+1; i <= n; i ++)

{ if(r[i] < r[i-dk])//待插

{r[0] = r[i];//r[0]暫存器

for( j = i-dk; j>0 && r[0]四.說明

由於數學尚未解決,還未提出效率最高的遞增序列。

遞增序列最後為1,且沒有處1以外的公約數。

插入排序 希爾插入排序

本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...

插入排序 希爾排序

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

插入排序 希爾排序

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