public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
}
while(limit != 0){
for(int i=limit;i<array.length;i++){
temp = array[i];
index = i;
while(index > limit-1 && array[index - limit] >= temp){
array[index] = array[index - limit];
index -= limit;
}
array[index] = temp;
}
limit = (limit - 1)/3;
}
}
效率:
写法非常简单,是对插入排序的改进,也称为增量递减排序,增量的选择影响着算法的效率,没有归并排序那么高的空间复杂度,在一般的排序中都首选希尔排序,时间复杂度为:O(N*(logN)^2)