一.思想:
是插入排序法的一種改進。先取乙個小於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.整個陣列恰被分...