嘿我正在试图找出嵌套循环的增长率,我知道第一个循环将会出现100次左右,因为它只能运行100次,但第二次循环我不太确定。 任何人都可以帮助我吗?
29 for (int i = 0; i < MAX; ++i)
30 {
31 for (int j = 0; m[i] < m[j] && m[j] != 0; ++j)
32 {
33 product = product + (m[i] * n[j]);
34 }
35 }
完整的代码在这里
01 const int MAX = 100;
02 int lowerCount;
03 int higherCount;
04 int equalCount;
05 int product;
06
07 lowerCount = higherCount = equalCount = 0;
08 product = 0;
09
10 for (int i = 0; i < MAX; i++)
11 {
12 if (m[i] < n[i])
13 {
14 ++higherCount;
15 }
16 else
17 {
18 if (m[i] == n[i])
19 {
20 ++lowerCount;
21 }
22 else
23 {
24 ++equalCount;
25 }
26 }
27 }
28
29 for (int i = 0; i < MAX; i++)
30 {
31 for (int j = 0; m[i] < m[j] && m[j] != 0; j++)
32 {
33 product = product + (m[i] * n[j]);
34 }
35 }
36
37 cout << "lowerCount " << lowerCount << "\n";
38 cout << "equalCount " << equalCount << "\n";`
39 cout << "higherCount " << higherCount << "\n";
40 cout << "product " << product << "\n"";
答案 0 :(得分:2)
我认为您正在寻找的答案是O(N ^ 2 + 2N /(1 / 2N)+ 3n ^ 3)如果您使用Ballmers算法来计算复杂性,这是很清楚的。
答案 1 :(得分:1)
据我所知,在计算算法复杂度时,您可以为最佳,最差和平均情况提供大O.
在两个嵌套循环的情况下,最好的情况是O(n) - 如果内循环只执行一次(我忽略了两个循环只能处理一次迭代的事实)。 最糟糕的是O(n * k) - 第一个循环迭代n次,内部循环迭代k次。
Asier很难过,我们不知道m [i]中有什么,所以不知道平均复杂性会是什么。