如何解决计算 C 程序的效率
我正在编写一些代码,不得不计算效率,但我很挣扎。为方便起见,我只是将它们称为函数“f”。这两个不相关:
int f(int a,int b) {
int ans = 0;
for (int i = a; i > 1; i /= 2) {
if (i % 2) {
ans += b;
}
b += b;
}
return ans;
}
///////////////////////////////////////////
int f(int n) {
int count = 0;
for (int i = 0; i < n; ++i) {
for (int j = 1; j < i; ++j) {
count += i * j;
}
for (int k = 0; k < i * n; ++k) {
count -= k;
}
}
return count;
}
对于第一个,我认为它是 O(nlogn),因为 i 基于 a 并且有 2 个操作,if 语句和更新。对于第二个它应该是 O(n^2) 因为有一个嵌套循环。如果我做对了,请告诉我,谢谢。
解决方法
第一个函数是 O(log a) 因为唯一的循环从 a
开始,并且在每次迭代中该值减半。
第二个函数是 O(n^3),因为外循环是 n
次,(较大的)内循环是 i*n
次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。