算法复杂度的计算
来源:互联网 发布:2018淘宝开店流程 编辑:程序博客网 时间:2024/04/28 22:27
算法复杂度是程序猿面试中考察几率比较大的一个问题,尤其在一些互联网公司的线上笔试中,经常可以看到这种问题,时间复杂度、空间复杂度等等,而且其本身又是考察算法优劣的一个重要参考,所以在此解析说明一下,希望遇到类似问题可以不再捉急O(∩_∩)O~
首先我们应该找到程序中最基本的操作,然后考量基本运算操作的重复执行次数;如果基本运算操作重复执行的次数大,则说明算法的复杂度比较高;首先我们需要明白一个概念:一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。
常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)
下面我们用几个实例来演示一下算法复杂度的计算是如何得出的:
1、O(1)
Temp=i; i=j; j=temp
该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。注意:如果算法的执行时间不随着问题规模n的增加
而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
2、O(n^2)
1. sum=0;
2. for(i=1;i<=n;i++) (n+1次)
3. for(j=1;j<=n;j++) (n^2次)
4. sum++; (n^2次)
3、O(n)
1. a=0; 2. b=1; ①
3. for (i=1;i<=n;i++) ②
4. { 5. s=a+b; ③
6. b=a; ④
7. a=s; ⑤
8. }
4、O(log2n) 以2为底
1. i=1; ① 2. while (i<=n) 3. i=i*2; ②
5、O(n^3)
1. for(i=0;i<n;i++) 2. { 3. for(j=0;j<i;j++) 4. { 5. for(k=0;k<j;k++) 6. x=x+2; 7. } 8. }
算法的复杂度其实还包括一个空间的复杂度,指的是该算法耗费的存储空间。算法的空间复杂度:一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间三个方面。
0 0
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法复杂度的计算
- 算法的复杂度计算
- 算法复杂度的计算
- 算法复杂度的计算
- VHDL语言编写DS18B20温度传感器程序详解
- 透明兼容调试
- Unity如何限制3D物体的旋转角度
- Android开发之五大存储方式之一数据库存储
- 如何在没有官方API的情况下写一个第三方客户端
- 算法复杂度的计算
- 设计模式(八)外观模式
- 第十周—个人所得税
- JavaScript进阶学习——DOM对象
- K3 数据库常用表
- Android 数据库中读取图片名称加载相应的资源
- android EditTextView 设置不可输入不可点击及获取焦点
- 写好一篇运营文案的10个步骤,你造吗?
- 一些有用的技术网址