大话数据结构之第二章算法总结,重点知识,时间复杂度
来源:互联网 发布:河南的网络歌手 编辑:程序博客网 时间:2024/05/18 15:08
算法
算法是解决特定问题求解步骤的描述
算法的特性
五个基本特性:输入,输出,有穷性,确定性和可行性
输入输出:算法具有零个或多个输入,至少有一个或多个输出
有穷型:算法在执行有限步骤后,自动结束而不是出现五年循环,并且每一步在可接受的时间内完成
确定性:算法的每一步都具有确定的意义,不会出现二义性
可行性:算法的每一步都是可行的,都可以在有限的次数完成
算法的时间复杂度
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记做:T(n)=O(f(n))。
推导大O阶方法:
1.用常数1取代运行时间中的所有加法常数
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在切不是1,则去除与这个项相乘的常数。
4.得到的结果就是大O阶
常数阶
int sum=0;
Sum +=1;
Printf(“%d”,sum);
这个算法的运行次数函数f(n) = 3,根据我们推导的大O方法,把常数项3改为1,在保留最高项时发现,它根本没有最高阶项,所以这个算法的时间复杂度是O(1)
线性阶
线性阶的循环结构会复杂很多,要确定某个算法的阶次,需要去顶摸个特定语句或者某个语句集运行的次数,因此,我们哟啊分析算法的复杂度,关键就是要分析循环结构的运行情况。
下面这段代码,它的循环的时间复杂度是O(n),因为循环体的代码需要执行n次
int i;
For(i=0;i<n;i++)
{}
对数阶
下面这段代码
int i = 1;
While(i<n)
{
I = i*2
}
由于每次i*2后,就距离n更近了,也就是说,有多少个2相乘后会大于n,则会退出循环。由于=n得到x=,所以这个循环的时间复杂度是O(logn)
循环嵌套
Int i.j;
For(i=0;i<n;i++)
{
For(j=0;j<n;j++)
}
语句执行的次数为,所以时间复杂度为O()
看下下面的嵌套
For(i=0;i<n;i++)
{
For(j=n;j<n;j++)
}
当i=0时,执行了n次,当i=1时,执行了n-1次,当i=n-1时,执行了1次,所以执行的次数为 n+(n-1)+(n-2)。。。+1=
根据大O推导方法,只保留最高阶,并去掉最高阶常数,所以为
- 大话数据结构之第二章算法总结,重点知识,时间复杂度
- 大话数据结构之算法 时间复杂度
- 《大话数据结构》笔记之 第二章 算法
- 数据结构之算法时间复杂度
- 数据结构之算法时间复杂度
- 数据结构之算法时间复杂度
- 数据结构——《大话数据结构》之时间复杂度
- 《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
- 《大话数据结构》读书笔记一:算法的时间复杂度
- 大话数据结构学习之(一) 时间空间复杂度
- 大话数据结构之——时间复杂度O
- 数据结构之算法与算法时间复杂度
- 数据结构和算法--时间复杂度学习总结
- 大话数据结构第二章——算法
- 读书笔记-《大话数据结构》第二章算法
- 大话数据结构 第二章 算法(读书笔记)
- 数据结构之算法时间复杂度详解
- 数据结构第二周项目3(1)--体验复杂度之两种排序算法的运行时间
- C++primer plus第六版课后编程题答案8.5
- 【Burnside引理】疫苗
- Java开发的10位牛人
- (转)十一种通用滤波算法
- 并发无连接服务器----设计思想
- 大话数据结构之第二章算法总结,重点知识,时间复杂度
- RIB表与FIB表、ARB表与FDB表的区别
- 《最后期限》读后感
- 黑马程序员_OC基础11_内存管理01
- 【树状数组套线段树】数列
- 浅析windows bat中IF语句的语法
- qt 字体处理
- xcode快捷键
- 调试程序