微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算 C 程序的效率

如何解决计算 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 举报,一经查实,本站将立刻删除。