数据结构与算法分析(算法分析部分)
2017-12-05 20:28
246 查看
1.算法:对于一个问题,某种算法被确定是正确的,还要考虑这个算法的可行性,比如时间和内存。
2.数学基础:
时间复杂度:
如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”,当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。
我们常用大O表示法表示时间复杂度:
原则:忽略低阶项和常数, 如:T(N)=O(2N^2)或者T(N)=O(N^2+N)简化成
T(N)=O(N^2)即可
最坏运行时间:即按照算法的最长时间来计算
for循环:n
嵌套for循环:n^2
当问题规模即要处理的数据增长时, 基本操作要重复执行的次数必定也会增长, 那么我们关心地是这个执行次数以什么样的数量级增长。所谓数量级可以理解为增长率。这个所谓的数量级就称为算法的渐近时间复杂度, 简称为时间复杂度。如何分析这个数量级呢? 由于基本操作的执行次数是问题规模n 的一个函数T(n), 所以问题就是我们要确定这个函数T(n)是什么, 然后分析它的数量级(增长率), 拥有相同数量级的函数 f(n) 的集合表示为 O(f(n)), O是数量级的标记。如果T(n)的数量级和f(n)同
3.运行时间中的对数:
分析算法最混乱的地方就在对数上面。对数经常出现的规律:如果一个算法用常数时间将问题的大小削减为其一部分,那么该算法就是Olog(N),若是削减到常数,那么该算法就是O(N)的。例如折半查找算法,在一个有序的数组中,查找A[i}=x,若是x大于中间的元素,那么就查找数组的右半部分,否则,查找数组的左半部分。
2.数学基础:
时间复杂度:
如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”,当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。
我们常用大O表示法表示时间复杂度:
原则:忽略低阶项和常数, 如:T(N)=O(2N^2)或者T(N)=O(N^2+N)简化成
T(N)=O(N^2)即可
最坏运行时间:即按照算法的最长时间来计算
for循环:n
嵌套for循环:n^2
当问题规模即要处理的数据增长时, 基本操作要重复执行的次数必定也会增长, 那么我们关心地是这个执行次数以什么样的数量级增长。所谓数量级可以理解为增长率。这个所谓的数量级就称为算法的渐近时间复杂度, 简称为时间复杂度。如何分析这个数量级呢? 由于基本操作的执行次数是问题规模n 的一个函数T(n), 所以问题就是我们要确定这个函数T(n)是什么, 然后分析它的数量级(增长率), 拥有相同数量级的函数 f(n) 的集合表示为 O(f(n)), O是数量级的标记。如果T(n)的数量级和f(n)同
3.运行时间中的对数:
分析算法最混乱的地方就在对数上面。对数经常出现的规律:如果一个算法用常数时间将问题的大小削减为其一部分,那么该算法就是Olog(N),若是削减到常数,那么该算法就是O(N)的。例如折半查找算法,在一个有序的数组中,查找A[i}=x,若是x大于中间的元素,那么就查找数组的右半部分,否则,查找数组的左半部分。
相关文章推荐
- 数据结构与算法分析:第1、2章:引论和算法分析
- 对数据结构一点一小小的理解(二)——算法分析部分
- 浅谈数据结构与算法分析学习及如何进行算法分析
- 数据结构与算法分析(chapter2 算法分析)
- 数据结构与算法分析 2.17 给出有效的算法(及其运行时间分析)
- 00数据结构与算法分析_02算法分析(三)
- 数据结构与算法分析c++:算法分析
- [原创]桓泽学音频编解码(11):AC3 exponent(指数部分)模块解码算法分析
- 《数据结构与算法分析:C语言描述_原书第二版》CH2算法分析_课后习题_部分解答
- 《数据结构与算法分析--c语言描述》之第二章:算法分析
- 主成分分析PCA算法部分代码(python)
- 《数据结构与算法分析-第2章-算法分析》
- 《数据结构与算法分析--c语言描述》之第二章:算法分析
- [原创]桓泽学音频编解码(12):AC3 Mantissa(小数部分)模块算法分析
- 《数据结构与算法分析》学习笔记(二)——算法分析
- 数据结构与算法分析(3)算法分析
- 数据结构与算法分析c++:算法分析
- 数据结构与算法分析(4)算法分析的编程练习
- 操作系统部分算法总结、分析与创新
- <数据结构与算法分析 C++描述>算法分析之最大子序列和问题