数据结构与算法之复杂度介绍

## 如何衡量程序运行的效率
    当你在大数据环境中开发代码时,你一定遇到过程序执行好几个小时,甚至好几天的情况,或者是执行过程中电脑几乎卡死的情况:    
    1.如果这个效率低下的系统是离线的,那么它会让我们的开发周期,测试周期变的很长;
    2.如果这个效率低下的系统是在线的,那么它随时具有时间爆炸或者内存爆炸的可能性。
    因此,衡量代码的运行效率对于一个工程师而言,是一项非常重要的基本功。
    **1.复杂度是什么**
    复杂度是衡量代码运行效率的重要度量因素,在介绍复杂度之前,有必要先看一下复杂度和计算机实际任务处理效率的关系,从而了解降低复杂度的必要性。
    计算机通过一个个程序去执行计算任务,也就是对输入数据进行加工处理,并最终得到结果的过程,每个程序都是由代码构成的。可见,编写代码的核心就是要完成计算。但对于同一个计算任务。不同计算方法得到结果的过程复杂程度是不一样的。这对你实际的任务处理效率就有了非常大的影响。
    **复杂度一般用两个维度来衡量(时间和空间);**
    复杂度是一个关于输入数据量n的函数。假设你的代码复杂度是f(n),那么就用大些字母O和括号,把f(n)扩起来就可以了,即O(f(n))。例如,O(n)表示的是,复杂度与计算实例的个数n线性相关,O(logn)表示的是,复杂度与计算实例的个数n对数相关。
    首先。复杂度与具体的常系数无关,例如,O(n)和O(2n)表示的同样的复杂度,解析:O(2n) 等于O(n+n),也等于O(n)+O(n)。也就是说,一段O(n)复杂度的代码只是先后执行两遍,其复杂度是一致的。
    其次,多项式级的复杂度相加的时候,选择高者作为结果,例如O(n*n)+O(n)和O(n*n)表示的是同样的复杂度,解析:O(n*n)+O(n)=O(n*n+n)。随着n越来越大,二阶多项式的变化率要比一阶多项式更大的。因此,只需要通过更大变化率的二阶多项式来表示复杂度就可以了。
    **待续......**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值