算法时间复杂度
来源:互联网 发布:女神联盟2进阶12数据 编辑:程序博客网 时间:2024/04/28 08:52
算法时间复杂度定义:(引用《大话数据》)
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n) = O(f(n))。他表示随时间规模n的增大,算法执行时间的增长率和f(n) 的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模哦n的某个函数。
定义的文字很难理解,让我们用一个简单的例子说明一下:
1 + 2 + 3 + 4 +.........+ 100 用C编译:
#include <stdio.h>
void main()
{
int i, sum = 0; //执行一次
for (i = 1; i <= 100; i++) //执行了n+1次
{
sum += i; //执行n次
}
printf ("和为:%d\n",sum);//执行了1次
}
所以这道程序所执行的总次数为:1 + (n+1) + n + 1 = 2n + 3
“大O阶”推导算法时间复杂度
第一步:用常数1取代运行时间中的所有加法常数。
2n + 3 == 2n + 1 (3为加法中的常数)
第二步:在修改后的运行次数函数中,只保留最高阶项。
2n + 1 == 2n
第三步:如果最高阶项存在且不是1,则去除与这个项相乘的常数。得到的结果就是大0阶。
2n + 1 == n
因此最后我们得到上面那段代码的算法时间复杂度表示为:0(n)
1 0
- 算法 时间复杂度|空间复杂度
- 算法 时间复杂度|空间复杂度
- 算法 时间复杂度|空间复杂度
- 算法时间复杂度&空间复杂度
- 算法-时间复杂度、空间复杂度
- 算法复杂度--时间复杂度,空间复杂度
- 算法的时间复杂度
- 算法时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法的时间复杂度
- 算法时间复杂度基础
- 算法的时间复杂度
- KVC与KVO的理解
- 数据结构实验题目
- Android MVP with Fragment and RecyclerView
- HDU 5524 Subtrees
- MongoDB介绍以及在linux平台的安装使用
- 算法时间复杂度
- OC那些事(常用关键字, 概念)
- 第八周 数据结构之自建算法库——顺序串【项目5 - 计数的模式匹配】
- iOS 面试题 集锦(3)
- 【11/16】 iOS开发成长之路,【NSString 和NSInteger的相互转换,NSString字符串比较,拆分】
- 九度OJ 1343:城际公路网 (最小生成树)
- HDU 2050:折线分割平面【数学】
- 记录settings.xml的配置,理解mirror、repository、profile的关系
- Android项目——导入工程出错的解决问题