绪论
1.数据结构的基本概念
- 数据:信息的载体,描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号集合。
- 数据对象:例如一个表格
- 数据元素:表的一条数据
- 数据项:一条数据的
数据类型(集合+操作):
- 原子类型:值的类型+操作 char int float
- 结构类型:结构的集合+操作 list map set
- 抽象数据类型DAT:数据对象+数据关系+操作
数据不是孤立的,他们存在着某种关系,这种相互的关系我们叫做结构
数据结构:是相互之间存在的一种或多种特定关系的数据元素的集合。
数据结构的三要素:逻辑结构、存储结构、数据的运算
逻辑结构
- 线性结构
- 非线性结构:集合、树形结构(一对多)、图状结构(多对多)
存储结构
- 顺序存储:数组
- 链式存储:链表
- 索引存储:索引表(关键字、关键字地址)、数据表
- 散列存储:通过函数计算地址
数据的运算
运算包括运算的定义和实现。
定义针对逻辑结构
运算针对存储结构
2.算法的基本概念
算法:对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
- 有穷性:执行有穷步之后结束,每一步都在有穷时间内完成。
- 可行性:可行的,描述的操作都是基本运算执行有限次来实现的。
- 确定性:每一条指令都有确定的含义,同样的输入有同样的输出。
- 输入:0或多个
- 输出:1个或多个输出
算法效率的度量
- 正确性:
- 可读性:
- 健壮性:输入非法数据时,算法能使用的做出反应或进行处理。
- 效率与存储量
时间复杂度**
语句频度:语句执行的次数。
T(n):所有语句的频度之和
时间复杂度:T(n) = O(f(n)),其中O表示T(n)与f(n)在n趋于无穷时为同阶无穷大。
最坏时间复杂度、最好时间复杂度、平均时间复杂度。
例如:
T(n) = 1 + n + n² = O(n²)
空间复杂度
S(n) = O(g(n))
算法原地工作是指需要的存储空间为常量 O(1)