什么是大O表示法「文末赠书」

做了这么多年的程序员,是不是一直靠着自己的聪明伶俐在编码,数据结构和算法是前辈们的心血和经验总结,不可错过。

数据结构是利用其存储结构和逻辑结构来有效地组织数据,比如线性的表、栈、队列,非线性的树、图等,而算法是描述运算的过程,良好的算法是建立在有效的数据结构之上的。

评价算法的指标

评价一个算法的好坏,除了他正确性指标外,就是所消耗的时间和空间

为了方便计算所消耗的时间,需要先作2个假设

  1. 算法与计算机的软硬件无关(硬件好理解,软件比如编程语言、执行器、编译器等);

  2. 代码中的每个语句所消耗的时间都一样,记作一个时间单位;

举个例子

for (int i = 0; i < n; i++) { //①
  for (int j = 0; j < n; j++) { //②
    c[i][j] = 0; //③
    for (int k = 0; k < n; k++) { //④
      c[i][j] = a[i][k] + b[k][j] + c[i][j]; //⑤
    }
  }
}

计算它所消耗时间的过程如下

  • 语句①需要循环到i=n时才会完结,所以它耗费n+1个时间单位;

  • 语句②同语句①,自己的的循环中耗费n+1个时间单位,但它在①的n次循环体内,所以消耗n*(n+1)个时间单位;

  • 语句③在语句①②循环体内,它们分别循环n次,所以语句③消耗n*n个时间单位;

  • 语句④同③,但它本身执行n+1,所以语句④消耗n*n*(n+1)个时间单位;

  • 语句⑤在语句①②④循环体内,它消耗n*n*n个时间单位;

所以总体消耗的时间为:n+1 + n*(n+1) + n*n+n*n*(n+1)+n*n*n=2n3+3n2+2n+1

算法的时间复杂度</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值