基本思想
希爾排序是把記錄按下表的一定增量分組,對每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關(guān)鍵詞越來越多,當增量減至1時,整個文件恰被分成一組,算法便終止。
實現(xiàn)步驟
- 計算數(shù)組中間值,劃分間隔gap
- 按照gap間隔,劃分為新的子序列
- 分別使用插入排序,使每個子序列變得相對有序
- 減少間隔gap,重復步驟2、3
劃分序列
實現(xiàn)代碼
public class Shell_Sort {
public static void shell_sort(int[] array){
if (array==null||array.length<=0){
return;
}
int length = array.length;
int gap=length/2;
int temp = 0;
while (gap>0){
for (int i = gap; i <length; i++) {
temp = array[i];
int preIndex = i-gap;
while (preIndex>=0&& array[preIndex]>temp){
array[preIndex+gap] = array[preIndex];
preIndex-=gap;
}
array[preIndex+gap]=temp;
}
gap /=2;
}
}
public static void main(String[] args) {
int[] array = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
shell_sort(array);
System.out.println(Arrays.toString(array));
}
}