据我了解,该算法的复杂度,同时进行排序操作的最大数量。 因此,冒泡排序的复杂性应arithmmetic级数的总和(从1到n-1),而不是N ^ 2。 下面的实现计数的比较次数:
public int[] sort(int[] a) {
int operationsCount = 0;
for (int i = 0; i < a.length; i++) {
for(int j = i + 1; j < a.length; j++) {
operationsCount++;
if (a[i] > a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
System.out.println(operationsCount);
return a;
}
具有10个元素为阵列的输出中是45,所以它的等差级数的从1到9的总和。
那么,为什么冒泡排序的复杂性为n ^ 2,而不是S(N-1)?