分享
 
 
 

时间复杂度量,大O表示法复习总结

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

?一. 简介

???

?1.1 大O表示法

??????????1.1.1 定义

??????????1.1.2 用大O来表述

??????????1.1.3 加法规则

??????????1.1.4 乘法规则

??????????1.1.5 一个特例

??????????1.1.6 一个经验规则

?

版本:1.0

作者:Soundboy

日期:2004-8-26

备注:本文是学习数据结构的大O表示法的学习笔记?

一. 简介

做了几年程序,感觉基本的东西很多还不熟悉,所以重新补充数据结构知识。

1.1 大O表示法

上学的时候就学习了大O表示法表示一个算法的效率,也大概明白怎么回事,知道如果没有循环的一段程序的复杂度是常数,一层循环的复杂度是O(n),两层循环的复杂度是O(n^2)? (我用^2表示平方,同理 ^3表示立方)。但是一直对于严格的定义和用法稀里糊涂。

1.1.1 定义

设一个程序的时间复杂度用一个函数 T(n) 来表示,对于一个查找算法,如下:

int seqsearch( int a[], const int n, const int x)

{

int i = 0;

for (; a[i] != x && i

if ( i == n) return -1;

else return i;

}

这个程序是将输入的数值顺序地与数组中地元素逐个比较,找出与之相等地元素。

在第一个元素就找到需要比较一次,在第二个元素找到需要比较2次,……,在第n个元素找到需要比较n次。对于有n个元素的数组,如果每个元素被找到的概率相等,那么查找成功的平均比较次数为:

f(n) = 1/n (n + (n-1) + (n-2) + ... + 1) = (n+1)/2 = O(n)

这就是传说中的大O函数的原始定义。

1.1.2 用大O来表述

要全面分析一个算法,需要考虑算法在最坏和最好的情况下的时间代价,和在平均情况下的时间代价。对于最坏情况,采用大O表示法的一般提法(注意,这里用的是“一般提法”)是:当且仅当存在正整数c和n0,使得 T(n) = n0 都成立。则称该算法的渐进时间复杂度为T(n) = O(f(n))。这个应该是高等数学里面的第一章极限里面的知识。这里f(n) = (n+1)/2, 那么c * f(n)也就是一个一次函数。就是在图象上看就是如果这个函数在c*f(n)的下面,就是复杂度为T(n) = O(f(n)),图中的几条绿色的线都符合这个要求。

???

在途中,红色的线代表c*f(n) = c (n+1)/2 ,需要说明的是,两个绿色曲线我们假定它不会和红色线在Y的左边相交。而图中的蓝色线就不能说其渐进复杂度就不是O(f(n)).

对于对数级,我们用大O记法记为O(log2N)就可以了。

1.1.3 加法规则

T(n,m) = T1(n) + T2(n) = O ( max (f(n), g(m) )

1.1.4 乘法规则

T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))

1.1.5 一个特例

在大O表示法里面有一个特例,如果T1(n) = O(c), c是一个与n无关的任意常数,T2(n) = O ( f(n) ) 则有

T(n) = T1(n) * T2(n) = O ( c*f(n) ) = O( f(n) ).

也就是说,在大O表示法中,任何非0正常数都属于同一数量级,记为O(1)。

1.1.6 一个经验规则

有如下复杂度关系

c

其中c是一个常量,如果一个算法的复杂度为c 、 log2N 、n 、 n*log2N ,那么这个算法时间效率比较高 ,如果是 2^n , 3^n ,n!,那么稍微大一些的n就会令这个算法不能动了,居于中间的几个则差强人意。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有