希尔算法是插入排序与冒泡的一种延伸,将以步长为2将数组拆分grap= length/2
查分成一小块进行排序
然后继续grap/2
继续上述排序使数组大致上有序
直到grap=1时完成排序,减少排序次数,降低复杂度
for (int gap = array.length / 2; gap > 0; gap /= 2) {
//从第gap个元素,逐个对其所在组进行直接插入排序操作
for (int i = gap; i < array.length; i++) {
int j = i;
int temp;
while (j - gap >= 0 && array[j] < array[j - gap]) {
temp = array[j];
array[j] = array[j - gap];
array[j - gap] = temp;
j -= gap;
}
}
}