2401_83423308 2024-09-05 12:57 采纳率: 92.3%
浏览 8
已结题

分析下面代码的复杂度

img


分析下面代码的复杂度
分析下面代码的复杂度
分析下面代码的复杂度

  • 写回答

1条回答 默认 最新

  • 小ᶻZ࿆ 2024-09-07 11:00
    关注

    该回答引用自GPT-4o,由博主小ᶻZ࿆编写:

    分析下面代码的复杂度

    1. 第一段代码

    void func(int n) {
        int i, j, k, count = 0;
        for (i = n / 2; i <= n; i++) 
            for (j = 1; j <= n; j = j * 2) 
                for (k = 1; k <= n; k = k * 2) 
                    count++;
    }
    

    复杂度分析:
    第一层循环:i 从 n/2 到 n,运行了 n/2 次,时间复杂度为 O(n)。
    第二层循环:j 从 1 以 2 的倍数递增,即每次翻倍,执行次数为 log(n),时间复杂度为 O(log n)。
    第三层循环:k 与 j 类似,也是以 2 的倍数递增,执行次数为 log(n),时间复杂度为 O(log n)。
    总体时间复杂度为:O(n * log(n) * log(n)) = O(n * log^2(n))。

    function(int n) {
        if (n == 1) return;
        for (i = 1; i <= n; i++) {
            for (j = 1; j <= n; j++) {
                print("*");
                break;
            }
        }
    }
    

    2. 第二段代码:

    function(int n) {
        if (n == 1) return;
        for (i = 1; i <= n; i++) {
            for (j = 1; j <= n; j++) {
                print("*");
                break;
            }
        }
    }
    

    复杂度分析:

    • 第一层循环:i 从 1 到 n,执行了 n 次,时间复杂度为 O(n)。
    • 第二层循环:j 从 1 到 n,但由于 break 的存在,只执行一次,时间复杂度为 O(1)。
      总体时间复杂度为:O(n)。

    3. 第三段代码

    void func(int n) {
        int i = 1, j = 0;
        while (i + j <= n) {
            if (i > j) 
                j++;
            else 
                i++;
        }
    }
    

    复杂度分析:
    每次循环中,i 或 j 都会增大,因此每次循环的执行次数大约是 n 次。
    总体时间复杂度为:O(n)。

    总结:

    • 第一段代码的时间复杂度为 O(n * log^2(n))。
    • 第二段代码的时间复杂度为 O(n)。
    • 第三段代码的时间复杂度为 O(n)。

    如有帮助,题主可以采纳一下嘛,谢谢~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 今天
  • 已采纳回答 9月8日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?