VC++ “时间复杂度”需要注意的常见问题
来源:互联网 发布:arrival to earth知乎 编辑:程序博客网 时间:2024/04/24 10:34
1、以下程序运行的调度次数
int n = 10;for (int i = 1; i < n; i++)for (int j = 1; j < n; j = j + n / 2)for (int k = 1; k < n; k = 2 * k)x = x + 1;时间复杂度:(nlogn)
2、按数量级递增排序,常见的时间复杂度有:
常数阶:O(1)
对数阶:O(log(2)n)
线性阶:O(n)
线性对数阶:O(nlog(2)n)
平方阶:O(n^2)
立方阶:O(n^3)
……
K次方阶:O(n^k)
指数阶:O(2^n)
3、以下哪种节构,平均来讲获取任意一个指定值最快:
A:二叉树序树
B:哈希表
C:栈
D:队列
答案:B
4、辗转相除法的时间复杂度:
欧几里算法,又称为辗转相除法,用于求两个自然数的最大公约数,算法的思想很简单,基于下面的数论等式
gcd(a,b)=gcd(a,a mod b),其时间复杂度为O(logn)
5、算法实现如下的问题:
有20个数组,每个数组里面有500个数,升序排序,求出这10000个数字中最大的500个,同时确定时间复杂度。
算法分析:20个数组的最小元素全部进堆。每次去最小的一个时候,从最小元素对应的数组里取下来一个放到堆里。堆里一直最多有20个数,
充分利用20个数组的有序性。
A:判断20个数组的第一个元素,取出最小的放到堆里面,同时被取出数的数组删除对应的数值,长度减1.
B,判断所有数组元素的个数,是否大于500,若大于则执行A,否则停止并输出所有数组的元素
时间复杂度:500*log(20)
0 0
- VC++ “时间复杂度”需要注意的常见问题
- 常见问题时间复杂度的计算过程
- 常见问题与常见算法的时间复杂度
- 常见问题时间复杂度(1)
- oracle中表查询需要注意的常见问题
- 堆排序复杂度为O(nlogn),需要注意的误区
- VC.NET 需要注意的一些问题
- Hibernate操作时间需要注意的问题
- BDC程序需要注意的问题!(常见问题集合)
- Android常见问题归纳(需要注意的坑和解决方案)
- vc编写全局钩子需要注意的一个地方
- VC 编译Lib DLL需要注意的几点
- VC多模块程序设计与发布需要注意的细节
- vc 设置随机数种子需要注意的一个陷阱
- 关于用 VC++6.0新建access需要注意的
- VC和MATLAB混合开发需要注意的一个问题
- 中时间数据查询需要注意的一个小问题
- 更改文件时间属性需要注意的问题
- 关于float的二三事(一)
- java泛型(一)
- matlab中varargout与nargout,varargin与nargin的区别
- 屏蔽第三方框架中的依赖包和.so文件
- Android 通用COLOR、通用SIZE(DP和SP)
- VC++ “时间复杂度”需要注意的常见问题
- 两种定时刷新局部页面的方法--采用异步流程
- 快速理解C#高级概念(一) Delegate委托
- PHP规范PSR0和PSR4的理解
- 操作系统(Linux)--首次适应法实现主存分配和回收
- Idea 下配置 tomcat 以及 项目的配置
- Delphi 代码文件你结构
- Camera framwork调用结构
- MySQL常用函数系列之二:字符串函数(2)