Arrays 如何找到给定算法的比较次数和复杂性
我试图确定比较的总数(不计算循环的停止条件)以及复杂度如何随N增长Arrays 如何找到给定算法的比较次数和复杂性,arrays,c,algorithm,time-complexity,Arrays,C,Algorithm,Time Complexity,我试图确定比较的总数(不计算循环的停止条件)以及复杂度如何随N增长 1. for (int ind = 0; ind < N; ind++) { if (arr[ind] < 0) arr[ind] = arr[ind] * 2; } 2. bool there_are_duplicates = false; for (int ind1 = 0; ind1 < N; ind1++) { for (int ind2 = 0; ind2 <
1.
for (int ind = 0; ind < N; ind++)
{
if (arr[ind] < 0)
arr[ind] = arr[ind] * 2;
}
2.
bool there_are_duplicates = false;
for (int ind1 = 0; ind1 < N; ind1++)
{
for (int ind2 = 0; ind2 < N; ind2++)
if (ind1 != ind2 && arr[ind1] == arr[ind2])
there_are_duplicates = true;
}
3.
for (int ind = 0; ind < N; ind++)
{
int sum = 0;
int nb = 0;
for (int n = 0; n < 4; n++)
{
if (ind >= n)
{
sum = sum + arr[ind - n];
nb++;
}
}
arr[ind] = sum / nb;
}
1。
对于(int ind=0;ind=n)
{
sum=sum+arr[ind-n];
nb++;
}
}
arr[ind]=总和/nb;
}
对于第一个,复杂度为N,比较次数也为N或仅等于1
对于第二个,复杂性为N^2,比较次数为2(N^2)或仅等于2?
对于第二个,复杂度为N,比较次数也为4N或仅等于1或4?让我们计算一下:
N
比较和O(N)
复杂性
N
)与除自身以外的所有其他项(即与N-1
项)进行比较。你有N*(N-1)
比较和O(N^2)
复杂性
4次处理。因此,您有4*N
比较和O(N)
复杂性
谢谢,这个如何?(int [IND=0;IND]<0 & & [IND]>20和& [IND] %=2=0)ARR[IND]=ARR[IND] +ARR[IND/2 ];}约旦:再次测试每一项:<代码> N< /代码>比较,<代码> O(n)< /代码>复杂性抱歉,我们不认为IF语句中有3个比较,被调用N次,所以比较的次数是3N?@Jordan:我们只有一个
if
和一个条件(当然可能很复杂);如果您想计算术语arr[ind]<0
,arr[ind]>20
等。最坏的情况是3*N
,最好的情况是N