排序演算法之希爾排序 java

2021-08-19 02:51:37 字數 1094 閱讀 7847

希爾排序是基於插入排序而改進的排序方法。它將資料分為多組,再對各組使用插入排序。

分組依據是增量d,一般增量是  排序元素的長度/2,呼叫一次插入排序,再繼續除2,再呼叫一次插入排序,再d/2.......直到d <1

希爾排序的時間複雜度為:o(n平方)

思路:

如有下列10個帶排序元素:

增增量d = 10/2 = 5,即每隔開5個元素的元素為一組,如下圖:

然後呼叫1次插入排序,再令d/2 = 5/2 = 2 ,即每隔開2個元素的元素為一組

再呼叫插入排序,d再繼續除2,d = 2/2 = 1,即每隔開1個元素的元素為一組,(即一共只有一組元素)

再呼叫插入排序:

排序完成。

**:

public class shellsort ;

shellsort(a);

for(int i=0;i=0&&array[j]>temp;j=j-d)

array[j+d]=temp;}}

if(d==1) //若是已完成增量d=1 後的排序,就退出迴圈

break;

} }}

Java排序演算法之希爾排序

希爾排序 shell sort 又稱為 縮小增量排序 是1959年由d.l.shell提出來的。它也是一種屬於插入排序類的排序方法,是一種對直接插入排序的改進,但在時間效率上卻有較大的改進。希爾排序的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入...

JAVA排序演算法之希爾排序

本章內容對希爾德原理及特點並沒有做太多敘述,主要目的是對希爾排序 進行 解希爾排序內容簡介希爾排序是插入排序的一種,也成縮小增量排序,是直接插入排序演算法的 一種更高效的改進版本 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入演算法排序,每組包含的元素越來越多,當增量減至1.整個陣列恰被分...

排序演算法之希爾排序 java實現

希爾排序 在直接插入排序的基礎上進行的優化,直接插入排序在n值小的時候效率比較高,在n很大的時候如果待排序序列基本有序,效率依然很高,時間效率可以提公升為o n 希爾排序也稱之為縮小增量排序。1.先選取乙個小於n的整數d 步長 然後按照步長d將待排序序列分為d組,從第乙個記錄開始間隔為d的為乙個組。...