数据结构与算法学习笔记(2):图解数据结构与算法-复杂度分析(一):大O统计法

立即学习:https://edu.csdn.net/course/play/29510/420447?utm_source=blogtoedu

数据结构初识

线性(用线串起来的数据结构)——增加容易,查找复杂。

用格子分开的数据结构——查找容易,增加复杂。

算法复杂度分析(一)

大O统计法的使用

代码的高效:时间复杂度尽可能低,空间复杂度尽可能小

事后统计法和大O统计法的对比

大O统计法计算方式:

  1. CPU执行代码的逻辑步骤:读取数据 > 运算 > 写数据
  2. 假设每行代码执行时间一样,及做一个单位时间 unit_time
  3. 将所有代码执行时间设为T(n),T(n)与每行代码执行次数成正比,可得一个关系式。

【例】

算法一:

sum = 0;//1 * unit_time
for(i = 1; i<=n; i++){//n * unit_time
    sum = sum + (-1)^n; //n * unit_time
}
每行代码所需要的时间记为unit_time
第一行:1 * unit_time
第二行:n * unit_time
第三行:n * unit_time
一共需要:(2n + 1) * unit_time

算法二:

sum = 0;
for(i = 1; i <= n; i++){
    for(j = 1; j<=n; j++){
        sum = i + j + sum
    }
}
每行代码所需要的unit_time:
第一行:1 * unit_time
第二行:n * unit_time
第三行:n * n * unit_time
第四行:n * n * unit_time
一共需要 (2n^2 + n + 1) unit_time

将unit_time当作一个标准量,忽略真实值

所有代码执行时间T(n)与每行代码的执行次数n成正比

大O统计法公式:T(n) = O(f(n))

T(n)代表代码执行时间;

n代表数据规模;

f(n)代表每行代码执行次数总和;

O代表T(n)与f(n)成正比;

 

用大O时间复杂度表示法:

算法一:T(n)=O(2n+1), 算法二:T(n)=O(2n^2+n+1)

大O时间复杂度并不具体表示代码真正的执行时间,代表的是代码执行时间随数据规模增长的变化趋势,所以也叫渐进时间复杂度,简称时间复杂度

当n很大时(甚至无穷大),公式中的低阶项、常量、系数三部分并不能左右趋势走向,所以这三部分都可以忽略,只需要记录一个最大量级就可以

爆炸曲线 2n^2 + n + 1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值