1.1数据结构的基本概念
1,数据
数据是信息的载体
2,数据元素
数据元素是数据的基本单位,一个数据元素由若干个数据项组成,数据项是构成数据元素不可分割的最小单位。
3,数据类型
原子型:其值不可再分的数据类型
结构类型:其值可以在分解为若干成分的数据类型
抽象数据类型:抽象数据组织和与之相关的操作
4,抽象数据类型
通常由数据对象、数据关系、基本操作集这样三元素来表示
5,数据结构
包括三个方面:逻辑结构、存储结构和数据的运算。逻辑结构与存储结构是密不可分的两个方面。
6,逻辑结构
逻辑结构分为线性结构和非线性结构
(1)集合
(2)线性结构:一对一
(3)树形结构:一对多
(4)图状结构或网状结构:多对多
7,物理结构(存储结构)
主要有:顺序存储、链式存储、索引存储和散列存储
顺序存储:物理位置相邻
链式存储:物理位置未必相邻
索引存储:类似于目录
8,数据的运算
包括运算的定义和实现
1.2算法和算法的复杂度
1,算法五大特征:
(1)有穷性
(2)确定性
(3)可行性
(4)输入
(5)输出
2,复杂度
(1)时间复杂度:主要分析T(n)的数量级
空间复杂度:衡量问题规模增大
时间复杂度大小判断:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2^n),从左到右时间性能依次降低。
(2)时间复杂的计算
单个循环体:直接关注循环体的执行次数
For(int i=0;i<=n;i++){sum=sum+i};循环体执行次数k=n+1;
时间复杂度:O(n);
For(int i=1;i<=n;i=2*i){sum=sum+i};满足条件:2^k<=n;循环体执行次数:[log2n]
时间复杂度:O(logn);
多个循环体:乘法规则,加法规则
(3)空间复杂度
指算法运行过程中所使用的辅助空间的大小
辅助空间:除了存储算法本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。