希爾排序 Shell Sort

2021-10-04 22:45:11 字數 892 閱讀 6737

是插入排序經過改進之後的高效版本,也稱縮小增量排序。

1959 年提出,是突破時間複雜度 o(n2) 的第一批演算法之一。

縮小增量排序的最優增量選擇是乙個數學難題,一般採用希爾建議的增量,具體如下。

思路與步驟:

**:

package constxiong.interview.algorithm;

/** * 希爾排序

* @author constxiong

* @date 2020-04-11 11:58:58

*/public class shellsort ;

shellsort(array); }

/*** 希爾排序

* @param array

*/private static void shellsort(int array)

//把當前值插入到在步長間隔的的陣列中找到的位置

array[preindex + step] = temp;

}step /= 2;

print(array);

} }/**

* 列印陣列

* @param array

*/private static void print(int array)

system.out.println();

}}

列印:

33 22 1 4 25 88 71 4 

25 22 1 4 33 88 71 4

1 4 25 4 33 22 71 88

1 4 4 22 25 33 71 88

特徵:

希爾排序(Shell Sort)

希爾排序 shell sort 又叫做縮小增量排序 diminishing increment sort 是一種很優秀的排序法,演算法本身不難理解,也很容易實現,而且它的速度很快。基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中...

希爾排序 shellsort

希爾排序 shellsort 又叫增量遞減 diminishing increment 排序,是由d.l.shell發明的,這個演算法是通過乙個逐漸減小的增量使乙個陣列逐漸趨近於有序從而達到排序的目的。假設有乙個陣列int data 16 首先將這個增量設為16 2 8,這樣就將這個陣列分成了8個子...

希爾排序(ShellSort)

希爾排序 shellsort cpp view plain copy include shellsort.h include print.h 希爾排序,分組進行插入排序,最後一步仍然是插入排序,但是因為之前的操作使逆序數減少,所以相對單純的插入排序效率高。void shellsort inta,in...