您的位置:首页 > 其它

算法的时间复杂度

2017-10-13 06:43 190 查看

算法的时间复杂度

分析一个算法的好坏,一般是分析其时间复杂度T(n)和空间复杂度S(n)。其中时间复杂度(Time complexity)是指算法执行时耗费时间的长度,空间复杂度(Space complexity)是指占用存储单元的长度。本文只讨论时间复杂度的情况。

执行时间(running time)是取决于input size的数量级(n=6 和n=10^6所耗费的时间当然是不同的)、input pattern (如果要求对输入的数列作降序排序,输入的是升序数列就是最坏的情况,输入升序数列就是最佳情况)、机器配置(自己的小笔记本和超级计算机)。所以要定义时间复杂度,其实是有一些“默认的规则”存在的:

定义一个关于n的函数T(n) 例如T(n)=2n^2+6n+10

只考虑最坏情况

computional model 是RAM(Random Access Machine)

这里说的RAM是real-RAM也就是: 每个实数存储在一个存储单元内;给定一个内存地址,我们可以直接获取到这个数据而非从存储单元的第一个地址开始查找;假设原语操作(primitive operation)的执行时间为常数c。

a. arithmetic opreations: +、-、 *、 /、 ^(1/2)

b. assignment: =; x=y; y=5;

c. comparisions: >、< 、==、x>y

d. flow control: if、while

附上几页笔记





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 时间复杂度