一、思路
###二、结论
- 当gap = n 时,就得比较 array.length - n 次
- shell排序用移位法比取出来交换然后在插入效率高很多
三、代码
public class ShellSort {
public static void main(String[] args) {
// int[] array = new int[]{1, 9, 4, 6, 7, 2, 8, 3, 5};
int[] array = new int[]{1, 4, 6, 2, 3, 5, 8};
int[] sort = shellSort(array);
System.out.println(Arrays.toString(sort));
}
public static int[] shellSort(int[] array) {
for (int i = array.length / 2; i > 0; i = i / 2) {
for (int j = i; j < array.length; j++) {
int index = j - i;
int indexVal = array[j];
while (index >= 0 && indexVal < array[index]) {
array[index + i] = array[index];
index -= i;
}
array[index + i] = indexVal;
}
}
return array;
}
}
京公网安备 11010502036488号