【自考】算法——时间复杂度汇总
2015-10-15 00:10
417 查看
整理了自考《数据结构》中的所有时间复杂度,制作了如下几张表,便于对比和记忆,请笑纳。
常见时间复杂度排序:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(Cn)(指数阶)
时间复杂度,填空和选择会有不少于8分的题目。除了上述书中列出的,还有给一小段程序,让自己计算的。
时间复杂度的计算,从出题的规律来看,莫不是O(√n)、O(n)、O(log2n)、O(n2)、O(n3)这几种之一。
除了按照常规方法计算基本运算的次数之外,考试中时间复杂度的题也很有规律性。
1、看有几层循环,一层循环,是O(√n)或者O(log2n)或者O(n);两层循环,是O(n2);三层循环,是O(n3)。(一般规律如此,具体问题具体分析)
2、一层循环中到底是哪一个,对照下面代码,很快就能总结出来。
判断一下这几段程序的时间复杂度是多少?
1、
2、
3、
4、
5、
6、下边这是一个变种,看看它的时间复杂度是多少?
————————————————
答案:1、O(n2) 2、O(n3) 3、O(√n)
4、O(n) 5、O(log2n)6、O(mn)
你的答案对吗?
| 时间复杂度 | 顺序表 | 单链表 |
| 求表长 | O(1) | - |
| 读表元素 | O(1) | O(n) |
| 定位 | O(n) | O(n) |
| 插入 | O(n) | O(n) |
| 删除 | O(n) | O(n) |
~ | 深度优先搜索(邻接表) | O(n+e) |
图 | 深度优先搜索(邻接矩阵) | O(n2) |
~ | 拓扑排序 | O(n+e) |
查找表 | 二分查找法 | O(log2n) |
排序算法 | 直接插入 | 冒泡排序 | 快速排序 | 直接选择 | 堆排序 | 二路归并 |
时间复杂度 | O(n2) | 最好O(n)|O(n2) | 平均O(nlog2n)|最坏O(n2) | O(n2) | O(nlog2n) | O(nlog2n) |
稳定性 | 稳定 | 稳定 | 不稳定 | 不稳定 | 不稳定 | 稳定 |
常见时间复杂度排序:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(Cn)(指数阶)
时间复杂度,填空和选择会有不少于8分的题目。除了上述书中列出的,还有给一小段程序,让自己计算的。
时间复杂度的计算,从出题的规律来看,莫不是O(√n)、O(n)、O(log2n)、O(n2)、O(n3)这几种之一。
除了按照常规方法计算基本运算的次数之外,考试中时间复杂度的题也很有规律性。
1、看有几层循环,一层循环,是O(√n)或者O(log2n)或者O(n);两层循环,是O(n2);三层循环,是O(n3)。(一般规律如此,具体问题具体分析)
2、一层循环中到底是哪一个,对照下面代码,很快就能总结出来。
判断一下这几段程序的时间复杂度是多少?
1、
for(i=1;i<=n;i++) { m++; for(j=1;j<=n;j++) k*=m; }
2、
for (i=1; i<=n; i++) for (j=1; j<=n; j++) for (k=1;k<=n;k++) x++;
3、
i=0;s=0; while(s<n) { i++; s=s+i; }
4、
i=0;s=0; while(i<n) { i++; s=s+i; }
5、
i=1; while(i<n) i=i*2;
6、下边这是一个变种,看看它的时间复杂度是多少?
for ( int i=0; i<m; i++) for ( int j=0; j<n; j++) a[i][j]=i*j;
————————————————
答案:1、O(n2) 2、O(n3) 3、O(√n)
4、O(n) 5、O(log2n)6、O(mn)
你的答案对吗?
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构揭秘一
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 数据结构之Treap详解
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总