一、数据结构的相关概念
1.数据
定义:是对客观事物的符号表示,是所有能够被输入到计算机中并被计算机程序处理的一种符号化的总称;
2.数据的构成
(1)数据的基本单位:数据元素
(2)数据项构成数据元素,数据元素构成数据对象,数据对象构成数据
(数据比作文件夹,数据对象是各种表,数据元素是表中的一列,数据项是一列中的某一个信息)
3.数据结构的定义
(1)数据结构:是相互之间存在一种或多种特定关系的数据元素的集合
(2)数据结构Data Structure 是二元组(D,S)
D:数据元素的有限集;S:数据元素间的关系的有限集
4.数据结构中的关系
(1)逻辑结构:是数据元素在现实世界中的真实的逻辑关系
a.集合:数据元素除了同属一个集合外无其他关系
b.线性结构:数据元素间呈一对一的关系
c.树状结构:数据元素间呈一对多的关系
d.图状(网状)结构:数据元素间呈多对多的关系
(2)物理结构:是数据元素在计算机中的表示,包括数据元素和其关系的表示
a.顺序储存结构:按照数据元素存储的相对位置来表示其逻辑关系
b.链式储存结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系
5.数据类型
(1)数据类型:是一组值的集合和定义在这组值上一系列操作的总称
(2)抽象数据类型(ADT)
ADT 抽象数据类型名{
数据对象:数据对象的定义
数据关系:数据关系的定义
基本操作:基本操作的定义
}ADT 抽象数据类型名
(3)抽象数据类型分为三类:
- 原子类型:其值不可分解(如整型)
- 固定聚合类型:其值由确定个数的成分按照某种结构组成(如复数)
- 可变聚合类型:其值数目不确定
二、算法及其分析
1.算法定义与特性
算法:是对特定问题求解步骤的一种描述,是指令的有限序列,一条指令表示一个或多个操作;
特性: a.有穷性;(每一步都在有穷时间内完成)
b.确定性(不产生二义性);
c.可行性;
d.0个或多个输入;
e.一个或多个输出
2.算法设计的要求
- 正确性;
- 可读性;(人能看懂)
- 健壮性;(数据非法也能做出反应,不产生莫名其妙的结果)
- 效率和低储存量需求
3.算法效率的度量
n为问题的规模
(1)时间复杂度 T(n)=O(f(n))
ps:嵌套循环看最内层,swap(a,b)一般是三次
A.难以直接精确计算时的计算方法
a.求平均值(有的题中:∑P*C 即每个步骤的概率*该步骤下的频度)
b.求最好和最坏时间复杂度(一般看最坏时)
B.O(c)<O(log2^n)<O(n)<O(nlog2^n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
(2)空间复杂度 S(n)=O(f(n))
A.算法原地工作:算法所需内存空间为常量
B.递归调用S(n)一般=递归的深度
注意:
1.存取结构
(1)随机存取:也叫直接存取,通过下标直接访问,如数组O(1)
(2)顺序存取:通过地址访问,如链表,O(n-1)
2.存储结构
(1)随机存储:借助元素地址存储的指针来实现,其主要是链式存储
(2)顺序存储:用一组连续的物理地址来存储,借助数组等实现
总结:
- 顺序表是顺序存储结构,采用随机存取;
- 链表是随机存储结构,采用顺序存取