数据结构与算法基础(复杂度分析基础2)

1>为什么需要考量一个算法的复杂度?

     事后统计法:就我个人而言,算法的好坏,可以考量我们应用效率,有些公司通过大量的测试去考量一个算法,通过测试监控执行的时间复杂度,空间等复杂度,这都必须经过通过数据测试来求得,这种结果相对来说还是比较准确的,毕竟是经过实践测试得到,但是是这种测试依赖集群环境,cpu处理器等影响,可以说是事后统计法,

      存在的问题:a>太过于依赖环境,机器硬件,cpu 处理器等影响结果

                           b>相对麻烦,如果有100亿条数据,只有通过测试才能知道复杂度,需要时间消耗,时间等待,占用机器资源,从而引出通过数学知识分析时间复杂度,空间复杂度,最好,最坏,平均,均摊时间复杂度等复杂度,总体考量一个算法的执行效率,到底能做到节多少的时间,空间

  2>复杂度的表示法,(大O表示法)

   列1

public int sum_int(int n ){
    int sum = 0;
    for(int i=1;i<= n i++){
        sum +=i
     }
        return sum;

}

    解释,这段代码是从1+2+3+....+10求和运算,我们假设每行代码的执行时间都是相同的.,都是1unit_time,其中

         第2行执行了一次,对应时间是1unit_time,

        第3行代码执行了n次,所以对应的执行时间是n unit_time,

        第3行代码执行了n次,对应的执行时间是n unit_time 

      总结:总的执行时间是是1unit_time+n unit_time+n unit_time = (2n+1) unit_time,即:T(n) = (2n+1) unit_time从上式子可以看出,代码的执行时间与每行代码的执行时间成正比

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值