标签:有序数组 性能 插入排序 直接插入排序 shell 原理 分析 希尔排序 while
public void shellSort(int[] array) {
int gap = array.length;
while(gap > 1) {
insertSortGap(array, gap);
//gap的缩小方式决定了性能提升的程度
gap = gap / 3 + 1;
}
insertSortGap(array, 1);
}
private void insertSortGap(int[] array, int gap) {
for(int i = 0; i < array.length; i++) {
int tmp = array[i];
int j = i - gap;
for(;j > 0 && array[j] > tmp; j -= gap) {
array[j + gap] = array[j];
}
array[j + gap] = tmp;
}
}
标签:有序数组 性能 插入排序 直接插入排序 shell 原理 分析 希尔排序 while
原文地址:https://blog.51cto.com/14233687/2471952