目录
1.程序=数据结构+算法
2.基本结构:数据结构的基本概念
基本的数据结构 线性结构:线性表、栈和队列、串、数组和广义
非线性结构:树、图
基本的数据处理技术:查找技术、排序技术
①数据:
是能够输入计算机且能够被计算机处理的各种符号的集合
是信息的载体
是对客观事物符号化的表示
能够被计算机识别、存储和加工
数值型数据:整数、实数等
非数值型数据: 文字、图像、图形、声音等
是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理
也称元素、记录、结点、顶点
构成数据元素的不可分割的最小单位
数据>数据元素>数据项
⑤数据结构:
数据元素不是孤立存在的,他们之间存在某种关系,数据元素相互之间的关系称为“结构”。
是指相互之间存在一种或者多种特定关系的数据元素集合
描述数据元素之间的逻辑关系
与数据的存储无关,独立于计算机
从集体问题抽象出来的数学模型
⑦物理结构(存储结构):
数据元素及其关系在计算机存储器中的结构(存储方式)
是数据结构在计算机中的表示
存储结构是逻辑结构的映象与元素本身的映象
逻辑结构是数据结构的抽象,存储结构是数据结构的实现
⑨逻辑结构的种类:
(1)划分方法一:
线性结构:
有且只有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和直接后继
例如:线性表、栈、队列、串
非线性结构:一个结点可能有多个直接前驱和直接后继
例如:树、图
(2)划分方法二:四类基本逻辑结构(集合、线性、树、图)
集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其他关系
线性结构:数据中的数据元素之间存在着一对一的线性关系
树形结构:结构中的数据元素之间存在一对多的层次关系
图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系
四种基本存储结构:
顺序存储结构:连续的存储单元存储数据元素,元素之间的逻辑关系由元素的存储位置来表示
链式存储结构:任意的存储单元存储数据元素,元素之间的逻辑关系用指针来表示
索引存储结构:在存储信息的同时,还建立附加的索引表(类似目录,比较快)
散列存储结构:根据结点的关键字直接计算出该结点的存储地址
⑩数据类型和抽象数据类型
数据类型定义:是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称
抽象数据类型:指一个数学模型以及定义在此数学模型上的一组操作
引用参数&,除了提供输入值以外,还将返回操作结果
抽象数据类型定义:
ADT 抽象数据类型名{
DATA
数据对象的定义
数据元素之间的逻辑关系的定义
Operation
操作1
初始条件
操作结果描述
操作2
……
操作n
}ADT 抽象数据类型名
4.算法和算法分析:
对特定问题求解方法和步骤的一种描述,它是指令的有限序列,其中每个指令表示一个或者多个操作
程序:是用某种程序设计语言对算法的具体实现
②算法的特性:
有穷性:有穷的步骤,每一步在有穷的时间
确定性:算法的每一条指令有确切的含义
可行性:算法是可执行的
输入:0个或者多个输入
输出:一个或者多个输出
③算法设计的要求:
正确性:精心选择的典型的 几组数据能够得出满足要求的结果
可读性:易于人的理解
健壮性(鲁棒性):当输入非法数据时,算法做出反应进行处理,而不是产生莫名其妙的输出结果
高效性:花费尽量少的时间和尽量低的存储需求
④算法效率:
时间效率:算法所耗费的时间
空间效率:算法在执行过程中所耗费的存储空间
算法时间效率的度量:
事后统计:将算法实现,测算时间和空间的开销
缺点:花费较多时间和精力,实验结果依赖于计算机的软硬件等因素,掩盖算法本身的优劣
事前分析:对算法消耗资源的一种估算的方法
算法的运行时间=一个简单的操作需要的时间*简单的操作次数
时间复杂度:T(n)=O(f(n))
复杂度:常数阶<对数阶(log2 n)<线性阶<线性对数阶<平方阶<立方阶……<k次方阶<指数阶
空间复杂度:算法所需要存储空间的度量:S(n)=O(f(n))
注:本文是观看哔哩哔哩 王卓老师的视频做的笔记