互联网上的人们,
我在研究算法和它们的复杂性,我写了一个“天真”的代码来寻找数组中的倒数。首先,这看起来很简单,然后我开始怀疑j=i+i是否会将第二个循环的复杂度从最坏情况下的o(n)更改为更低的值?
以下是我用java编写的代码:
public static void naiveInversionCount(int[] T){
int count = 0;
for(int i = 0; i < T.length -1; i++){ // O(n)
for(int j = i+1; j < T.length; j++){ // O(n) ???
if(T[i]> T[j]) count++; // O(1)
}
}
System.out.println("Naive method returns : " + count);
}
非常感谢你
1条答案
按热度按时间yv5phkfx1#
外环正好运行n次。
内部循环运行n−1,n−2,…,每个外环0次。也就是说,平均是n/2倍。
以及
count++
每次循环只运行一次。因此,嵌套循环运行1·n(n/2)次,即(n)²).