我有几个问题,我在网上找不到有关Shell排序的Shell排序。
public static void shell(int[] a) {
int increment = a.length / 2;
while (increment > 0) {
for (int i = increment; i < a.length; i++) {
int j = i;
int temp = a[i];
while (j >= increment && a[j - increment] > temp) {
a[j] = a[j - increment];
j = j - increment;
}
a[j] = temp;
}
if (increment == 2) {
increment = 1;
} else {
increment *= (5.0 / 11);
}
}
}
这是我在网上找到的代码,但我真的不明白最后的其他陈述。 5.0 / 11代表什么? 此外,我需要分析算法的复杂性,虽然我收到了相当令人困惑的结果:
似乎O(n)无论是最好还是最坏的情况。这些结果是否合法?
答案 0 :(得分:0)