思路:希尔排序是插入排序的优化版,采用分组插排的方式,每次使得组内有序,随着组数的变小,待排数组将变得更加有序,直至组数为1的时候,整个数组将变成一个有序的数组,算法结束。
public static void shellSort(long[] array){
int gap=array.length/2;
while (true){
insertSortGap(array,gap);
if (gap==1){
break;
}
gap/=2;
}
}
private static void insertSortGap(long[] array, int gap) {
for (int i = 0; i < array.length; i++) {
long key=array[i];
int j=0;
for (j=i-gap;j>=0;j=j-gap){
if(key<array[j]){
array[j+gap]=array[j];
}else {
break;
}
}
array[j+gap]=key;
}
}