数据结构学习笔记——时间复杂度预估

本文是关于数据结构学习的笔记,重点讲解如何预估算法的时间复杂度。内容涵盖循环、嵌套循环、顺序执行语句、条件判断语句的时间复杂度计算,并介绍了对数级时间复杂度的概念,帮助理解算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 引言

 一个算法的好坏通常是评估其运行时的时间复杂度空间复杂度。算法的时间代价就是指算法执行时花费CPU的时间,与参与运算的数据量有关,通常很难事先计算得到。算法的时间效率指算法的执行时间随问题的增长而增长的趋势,通常采用时间复杂度来度量。
 算法时间复杂度的渐进表示通常用大O表示法,O表示法给出了函数f(x)的严格上限。其定义为:
 

预估指南

 一些通用规则通常能帮助我们确定一个算法的运行时间。
  1. 循环循环体的运行时间通常为循环体内语句的运行时间乘以循环次数
    //循环n次
    for(int i=0;i<n;i++)
     n+=1 //时间常数c
    

    总时间=c*n=cn=O(n)

  2. 嵌套循环从内到外分析,时间是所有循环的乘积
    //外层循化n次
    for(int i=0;i<n;i++)
    //内层循环n次
       for(int j=0;j<n;j++)
           k++;//时间常数c
    总时间=
  3. 顺序执行语句:每一条语句的运算时间和
    k=1; //时间常数
    //执行n次
    for(i=1;i<n;i++)
       k++
    //外层循环执行n次
    for(j=1;j<n;j++)
    //内层循环执行n次
       for(p=1;p<n;p++)
           k++;//时间常数
    总时间=
  4. if-then-else条件语句:最坏情况下的运行时间等于条件判断时间+最大值(then语句部分运行时间或者else语句部分运行时间)
    if(length()==0)
       return false;
    else{
       for(k=1;k<n;k++)
            p+=k;
        return true;
    }
    总时间=
  5. 对数级时间复杂度:通常会有变量倍增或者倍减的情况,此时时间复杂度为,底数有倍数决定
    for(int i=1;i<n;i=i*2)
       k++;
    总时间=(底数为2)=
注:本篇博客只是列举了通常见到的几种类型,还有一种特殊类型递归并没有提及,该类型会在后续类型中以独立的博客展开。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值