一、算法频度及时间复杂度
所谓一条语句的频度就是指该语句被执行的次数,任何算法最终都是被分成简单操作,如赋值、转向、比较、输入和输出等,来具体执行的,整个算法的频度是指算法中所有这些简单操作对应的语句频度之和,这种把语句执行次数多少作为算法时间度量的分析方法称为频度统计法
要精确计算出算法的频度有时是相当有困难的,实际上也没有必要,只要大致计算出相应的数量级(Order)即可,一般情况算法频度是问题规模n的函数,用T(n)表示,若有某个辅助函f(n)使得
则称f(n)与T(n)同阶,或者说他们只差一个常数倍 记作T(n) = O(f(n)) 称O(f(n))为算法的渐进时间复杂度,简称时间复杂度,时间复杂度就是频度的数量级表示,它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同
当f(n)为对数函数、幂函数、或者他们的乘积时,算法的运行时间是可以接受的,称这些算法是有效的,当f(n)为指数函数或阶乘函数时,算法的运行时间是不可以接受的,称这些算法是无效的。
随着n的增大,各种时间复杂度所对应的的算法的运行时间的增加速度大不相同,当n足够大时,各种时间复杂度存在着下列关系:
二、 存储方法
1,顺序存储(数组)
2. 链接存储
3. 索引存储(推荐索引按顺序存储、表按链接存储)
三、顺序存储与链接存储的比较
1.基于空间考虑:当线性表的长度变化不大,宜于事先确定好大小时,为了节约存储空间,宜采用顺序存储结构
2.基于时间考虑:若线性表的操作需频繁进行查找,很少做插入或删除操作时,宜采用顺序存储结构,反之宜采用链接存储结构。
线性表
最新推荐文章于 2020-10-25 16:38:34 发布