前言
个人复习内容整合,勿喷!!!
一、基本概念
-
1、数据:二进制0和1
-
2、数据元素:数据的基本单位
-
3、数据结构:强调数据元素之间的关系
-
4、数据对象:强调数据元素具有相同性质
-
5、数据结构三要素:逻辑结构、物理结构、数据的运算
(1)逻辑结构:包括集合、线性结构、树形结构、图结构
(2)物理结构:又叫存储结构。包括顺序结构、链式存储、索引存储、散列存储(哈希存储)
注意:- ①链式存储借助元素存储地址的指针来表示元素之间的逻辑关系
②采用顺序存储,则各个数据元素在物理上必须是连续的
采用非顺序存储,则各个数据元素在物理上可以是离散的
③数据的存储结构会影响存储空间分配的方便程度
(3)数据的运算:
- ①运算的定义是针对逻辑结构的
②运算的实现是针对存储结构的
- ①链式存储借助元素存储地址的指针来表示元素之间的逻辑关系
-
6、数据类型:原子类型(bool、int)、结构类型
-
7、抽象数据类型:(ADT)
-
8、算法的特性:有穷性、确定性、可行性、输入、输出
-
9、算法效率的度量
(1)时间复杂度
(2)空间复杂度=递归调用的深度
二、线性表
1.概念
线性表:具有相同数据类型的n个数据元素的有限序列
2.基本操作
代码如下(示例):
InitList(&L) //初始化表
DestroyList(&L) //销毁
ListInsert(&L, i ,e) //插入
ListDelete(&L, i ,&e) //删除
LocateElem(L , e) //按值查找
GetElem(L ,i) //按位查找
Length(L) //求表,返回线性表L的长度
PrintList(L) //输出操作,按前后顺序输出L的所有元素值
Empty(L) //判空操作;若L为空返回true,否则返回false
三、小Tips——时间复杂度
1.常用计算规则
(1)加法规则:O(f(n)) + O(g(n)) = O(max(f(n) , g(n)))
(1)乘法规则:O(f(n)) × O(g(n)) = O(f(n) × g(n))
2.三种复杂度
(1)最坏时间复杂度:考虑输入数据“最坏”的情况
(2)平均时间复杂度:考虑所有输入数据都等概率出现的情况
(3)最好时间复杂度:考虑输入数据“最好”的情况