希尔排序
时间复杂度:O(n^1.3)
最坏时间复杂度:O(n^2)
最好时间复杂度:O(n)
不稳定
希尔排序说起来也算是插入排序的一种改进,效率比较高,数据多时更加明显。
算法代码:
private static void sort2(int[] arr) {
int count = 0;
int h = 0;
while (h <= arr.length / 3) {
h = 3 * h + 1;
}
for (; h > 0; h = (h - 1) / 3) {
for (int i = h; i < arr.length; i++) {
for (int j = i; j > h - 1; j -= h) {
if (arr[j] < arr[j - h]) {
Common.swap(arr, j, j - h);
}
}
}
System.out.print("希尔排序:第" + (count++) + "轮之后,数组的顺序:");
Common.print(arr);
}
}
运行结果如下:
希尔排序:第1轮之后,数组的顺序:3 6 4 1 5 7 9 2 8
希尔排序:第2轮之后,数组的顺序:1 2 3 4 5 6 7 8 9