一、数据结构的基本概念
1.基本概念和术语
数据:信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号集合。
数据对象:具有相同性质的数据元素的集合,是数据的一个子集。
数据元素:数据的基本单位,通常作为一个整体进行考虑和处理。
数据项:构成数据元素的不可分割的最小单位。
详见链接:link.
数据类型:
- 原理类型:值的操作集合+操作(int、float、char等)
- 结构类型:结构的集合+操作(list、map、set等)
- 抽象数据类型ADT:数据对象+数据关系+操作(所有可以抽象出的模型)
数据不是孤立的,它们存在着某种关系,这种相互关系叫结构。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
2.数据结构三要素
- 逻辑结构:①线性结构;②集合;③树形结构;④图状结构。(②③④为分线性结构)
- 存储结构:①顺序存储;②链式存储;③索引存储;④散列存储。
- 数据的运算:运算包括运算的定义和实现,运算的定义针对逻辑结构,运算的实现针对存储结构。
二、算法和算法评价
1.算法的基本概念
算法:对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
算法的特性:①可行性;②有穷性;③确定性;④输入;⑤输出。
算法和程序的区别:
算法(指导者):解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有很多个算法,
程序(实施者):是某种程序设计语言对算法的具体实现
- 算法必须是有穷的,程序可以是无穷的;
- 算法必须是正确的,程序可以是错误的;
- 算法可以用伪代码、程序语言等描述,程序只能用程序语言编写并可以运行。
2.算法效率的度量
- 正确性:算法应能够正确地解决未解问题
- 可读性:算法应具有良好的可读性,以帮助人们理解
- 健壮性:输入非法数据时,算法能适应的做出反应或者进行处理
- 效率与存储量:效率是指算法执行时间,存储量需求是指算法执行过程中所需最大存储空间。
语句频度:该条语句可能重复执行的次数。
T(n):所有语句的频度之和,其中n为问题的规模
(1)时间复杂度:T(n)=O(f(n)),其中O表示T(n)与f(n)在n→+∞时为同阶无穷大
分类:①最坏时间复杂度 ②平均时间复杂度 ③最好时间复杂度
时间复杂度运算规则:
- 加法规则: T ( n ) T(n) T(n)= T 1 ( n ) T_{1}(n) T1(n)+ T 2 ( n ) T_{2}(n) T2(n)= O ( f ( n ) ) + O ( g ( n ) ) O(f(n))+O(g(n)) O(f(n))+O(g(n))= O ( m a x ( f ( n ) , g ( n ) ) ) O(max(f(n),g(n))) O(max(f(n),g(n)))
- 乘法规则: T ( n ) T(n) T(n)= T 1 ( n ) T_{1}(n) T1(n)* T 2 ( n ) T_{2}(n) T2(n)= O ( f ( n ) ) ∗ O ( g ( n ) ) O(f(n))*O(g(n)) O(f(n))∗O(g(n))= O ( f ( n ) ∗ g ( n ) ) O(f(n)*g(n)) O(f(n)∗g(n))
注:通常采用基本运算频度来分析算法时间复杂度
(2)空间复杂度:算法消耗的存储空间,记S(n)=O(g(n))
除本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和村春为实现算法所需的一些信息的辅助空间。
注:算法原地工作时指算法所需辅助空间为常量,O(1)
详见链接:link.