逻辑结构即数据的抽象表示,与具体实现无关的。数组
即数据结构的物理结构,这是数据结构在计算中的实际表示,依赖于具体实现。数据结构
运算的定义针对逻辑结构,运算的功能针对存储结构。函数
效率的度量由时间与空间的复杂度共同描述。spa
即执行算法须要消耗的时间。code
由于全部T(n)与f(n)同数量级,因此使用T(n)来衡量算法的实际复杂度。记作T(n)=O(f(n)),这里的O记号表示的的是取f(n)的最大数量级。对象
对于时间复杂度还有一点很是很是重要的是,时间复杂度依赖于输入。根据输入的不一样,通常咱们会将时间复杂度分类三类来讨论:最坏时间复杂度,平均时间复杂度,最坏时间复杂度。通常咱们考虑在最坏状况下的时间复杂度,即算法运行的上界。索引
经常使用的时间复杂度比较:
O(1) < O(\(log_2\)n) < O(n) < O(n) < O(n\(log_2\)n) < O(\(n^2\)) < O(\(n^3\)) < O(\(2^n\)) < O(\(n!\)) < < O(\(n^n\))队列
即实现这样的算法须要的辅助空间的大小。it
算法原地工做是指算法所须要的辅助空间是常量,即O(1)。
1) 如下属于逻辑结构的是( )
A. 顺序表 B. 散列表 C. 有序表 D.单列表
答案:C
解析:分清楚逻辑结构和存储结构。
2) 下列函数的时间复杂度是( )
int func(int n){ int i=0, sum=0; while(sum < n) sum += ++i; return i; }
答案:O(\(\sqrt n\))
解析:
3) 如下说法错误的是()
A. 算法原地工做的含义是指不须要任何额外的空间
B. 相同规模n下,复杂度O(n)的算法在时间上老是优于复杂度O(\(2^n\))
C. 所谓的时间复杂度是指最坏的状况下,估算算法执行时间的一个上界
D. 同一个算法,实现语言的级别越高,执行效率越低
答案:A 解析: