-
数据、数据元素、数据对象、数据结构和数据类型的定义
- 数据:是能输入计算机且能被计算机处理的各种符号的集合
- 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理;一个数据元素可以由若干个数据项组成
- 数据项:构成数据元素的不可分割的最小单位
- 数据>数据元素>数据项
- 数据对象:是性质相同的数据元素的集合,是数据的一个子集
- 数据结构:数据元素相互之间的关系称为结构;是指相互之间存在一种或多种特定关系的数据元素集合,或者是带结构的数据元素的集合
- 数据类型:是一组性质相同的值的集合以及定义与这个值集合上的一组操作的总称
-
数据的逻辑结构和存储结构
1、逻辑结构:
(1)集合结构:同属于一个集合
(2)线性结构:有且仅有一个开始和终端结点
线性表、栈、队列、串(1:1)
(3)非线性结构:一个结点可能有多个直接前驱和直接后继
树(1:N)图(N:M)
2、存储结构:
(1)顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示
(2)连接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示
(3)索引存储结构:在存储结点信息的同时,还建立附加的索引表
(4)散列存储结构:根据结点的关键字直接计算出该结点的存储位置
-
算法
1、算法:是解决问题的方法和步骤
2、算法特征:①有穷性 ②确定性 ③可行性 ④输入 ⑤输出
3、算法设计要求:①正确性 ②可读性 ③健壮性 ④高效性
-
最大频度计算算法的时间复杂度的方法
时间复杂度: T(n) = O( f(n))
频度:一个语句的频度是指该语句在算法中被执行的次数。
大O表示法的几种常见情况:
- 复杂度为常数,如23,9999,等等 都表示为O(1)
- 复杂度包含n时,省略系数与常数项,只取n的最高阶项 如:2n+45 为 O(n) ; 4n3+6n2+n 为O(n^3)
- 复杂度为对数时:如log5(n)、log2(n) 等等 都表示为 O(logn)
- 加法规则:省略低阶,只取高阶 (即取最大的) 如:logn+nlogn 表示为O(nlogn)
- 乘法规则:O(f(n))*O(g(n))表示为O(f(n)*g(n))
复杂度效率比较:“常对幂指阶”
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
- 分析下面程序的时间复杂度
int x = n; //n>1
int y = 0;
while(x>=(y+1)*(y+1)){
y++; //语句频度最高 ①
}
语句① ,由循环条件:x>=(y+1)*(y+1),且y每次都是递增1的
∴n=(y+1)*(y+1) y=√n-1 时间复杂度:O(√n)
i = 1; //①
while(i <= n)
i = i*2; //②
设语句②执行次数为x,由循环条件 i<=n
∴2^x=n x=log2^n 时间复杂度:O(log2^n)