数据结构---复杂度分析

数据结构—复杂度分析

什么是复杂度分析

数据结构和算法要解决的是代码执行的效率问题,如何对你写的代码进行一个理论上的效率分析呢?从代码执行的时间和数据所占用的存储空间上进行代码分析,就是复杂度分析。

为什么进行复杂度分析

因为代码的执行效率非常依赖代码的运行环境、代码处理的数据量。这时,在代码脱离运行环境和数据规模的情况下,对代码进行复杂度分析就显得很重要。这样我们可以通过复杂度分析,提前对自己的代码的执行效率有一个宏观的认识。

复杂度分析

复杂度分析又分为时间复杂度分析和空间复杂度分析。
时间复杂度是指代码执行的时间与数据量趋势之间的关系。
空间复杂度是指代码所占的存储空间与数据量趋势之间的关系。

复杂度分析方法

大O分析法
“O”是指时间,每条代码执行一次所需的时间,当执行n条代码时,所需的执行时间是T(n)=O(n)。
代码执行效率就是代码的运行时间。从执行结果来看,代码执行的时间T(n)与代码的执行次数成正比。
进行时间复杂度分析时,主要就是要找数据大头,就是数据等级最高阶的如O(n),O(n^2), O(nlogn)等等。在代码中就是重点关注循环执行次数最多的那一段代码。
常见的时间复杂度表示有以下几种。
(1)O(1)常量级的时间复杂度,所谓常量级就是指时间复杂度不会随着数据量n的变化而变化。一般算法中不存在循环结构、递归结构、其时间复杂度为O(1).
(2)O(n)线性级的时间复杂度。
(3)O(logn)对数级的时间复杂度。
(4)O(nlogn)线性对数级的时间复杂度,常见于归并排序、快速排序中。
(5)还有幂级的O(n^k)。
(6)非多项式量级的有指数级O(2^n),阶乘级O(n!)。
常见的空间复杂度有O(1),O(n),O(n^2)。


 i=1;
 while (i <= n)  {
   i = i * 2;
 }

对于这段代码,i从1开始取值,每执行一次翻一倍,当i大于n时结束循环。可以设执行x次,此时i为2^(x-1)与n进行比较,双方求对数。可以求得x=logn+1.此时时间复杂度为O(logn)级。

时间复杂度的评价

(1)最好情况时间复杂度:是指在最理想情况下,执行代码的时间复杂度。
(2)最坏情况下时间复杂度:是指在最坏情况下,执行代码的时间复杂度。
(3)平均时间复杂度:计算在所有情况下,执行代码的时间复杂度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值