兰兰想的博客

脑海中的创意, 生活中的点滴
返回列表

从例子来学习算法的时间复杂度

Fri Nov 15 2019 13:24:54 GMT+0800 (China Standard Time)


## 前言 时间复杂度能用来衡量一个算法的快慢 我们常用 大O表示法 来表示

阅读本篇文章,你需要有

  1. 程序语言基本知识
  2. 常见程序语言的循环,判断知识

例子

我们将通过不同的例子来向你展示不同的复杂度代表怎样的程序

1.时间复杂度为O(1)

其实就是执行一次的程序 比如:

java: int i=1;
php: $a=1;
js: var aa=1;

这些都是复杂度为O(1)的程序

2.时间复杂度为O(n)

这可能是你很好奇的一个,也是很常见的一个

for(int i = 0; i < n; i++){
   int a = 0; //执行N次
}
a = 1;//执行1次

这里按理来说应该是O(n+1),但实际上我们需要将1忽略 我们需要记住几条简化规则

1. 去掉加法常数

例: n+1+1=n n+10+1=n

2. 只保留最高项

例: n²+n+1=n²

3. 最高项系数为1

例: 2n²+n+2=n² 4n²+n=n²

2.时间复杂度为O(n²)

看完上面的你应该已经想到复杂度为n²的程序了

   for(int i = 0; i < n; i++) {         
       for(int j = 0; j < n; j++) {    
           int a=1;
       }
   }

拓展

所有时间复杂度的排序如下: O(1)<O(logn)<O(n)<O(n²)<O(n³)<O(2^n)

返回列表

相关文章

vc++ 2022 minimum or additional runtime missing the feature you are trying to use is in a network resource that is unavailable

阅读 12/4/2022, 2:12:00 PM

更规范的HTML5标签

阅读 9/22/2022, 7:38:00 PM

关于同构JavaScript的一些内容(同构JavaScript应用开发读书笔记)

阅读 4/26/2022, 8:05:58 PM

Restful Web service读书笔记

阅读 4/26/2022, 9:13:00 AM

前端注意的事情rail

阅读 4/9/2022, 6:19:30 PM

IDEA SECTOR