Java排序演算法 希爾排序

2021-07-10 01:18:30 字數 851 閱讀 5309

一.思想:

是插入排序法的一種改進。先取乙個小於n的整數d1作為第乙個增量,所有距離為d1倍數的整數作為乙個組,然後對組內 進行插入排序,然後再取第二個增量d2

二.例子:

比如2,5,3,1,4,6.

當d=3的時候,所有距離為3的整數作為乙個分組,那麼2,1作為乙個分組,5,4作為乙個分組,3,6作為乙個分組,然後對分組進行排序。2,1交換為1,2。5,4交換為4,5。3,6保持不變。所以,交換後的序列為1,4,3,2,5,6.

當d=2的時候,所有距離為2的倍數作為乙個分組,那麼1,3,5作為乙個分組,4,2,6作為乙個分組,對這些分組分別進行插入排序,則1,3,5不需改變,4,2,6交換為2,4,6.所以,交換後的序列為1,2,3,4,5,6.

當d=1的時候,即1,2,3,4,5,6作為一組,對這整個分組進行插入排序。

三.**實現:

public class test;

shellsort(data);

printdata(data);

}private static void printdata(int data)

}private static void shellsort(int data)

data[x + d] = flag;

} }

if(d == 1) break;

} }

}

四.複雜度與應用:

時間複雜度:取決於增量

空間複雜度:o(1)  是不穩定的演算法。

java演算法 希爾排序

int num new int int h 13 while h 0 num j thisnum h h 1 3 希爾排序實際上是一種分組插入排序,屬於插入排序的一種或者高階版,在分組排序過程中把陣列排列成 基本有序 的陣列,當整個資料為乙個陣列時 h 1 執行一次插入排序,此時資料為 基本有序 陣...

Java排序演算法之希爾排序

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

JAVA排序演算法之希爾排序

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