目录
1、数据结构讨论的范畴
2、基本概念
3、算法和算法的量度
1、数据结构讨论的范畴
Algorithm + Data Structures = Programs
程序:为计算机处理问题编制的一组指令集。
算法:解决问题的策略。
数据结构:问题的数学模型及定义在其上的一组操作
数据结构是一门讨论“描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现”的学科。
2、基本概念
2.1 数据与数据结构
数据:所有能被输入到计算机中,且能被计算机处理的符号(数值、字符等)的集合。——计算机操作对象的总称
数据元素:数据中的“个体”。
数据结构:对于一个特性相同的数据元素的集合,如果在数据元素之间存在一种或多种特定的关系,则称为一个数据结构。
带结构的数据元素的集合,即数据元素之间存在某种关系。
不同的“关系”,构成不同的“结构”。
1)数据结构是相互之间存在着某种逻辑关系的数据元素的集合。
2) 从关系或结构分,数据结构可归结为以下四类:
①线性结构;②树形结构;③图状结构;④集合结构
3)数据结构包括“逻辑结构” 和“物理结构”两个方面:
逻辑结构 是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合上的若干关系来表示;
物理结构 是逻辑结构在计算机中的表示和实现,故又称“存储结构” 。它包括数据元素的表示(映像)和关系的表示(映像)。
数据元素的表示(映像)——eg:整数的各个进制之间的转化
关系的表示(映像)分为顺序映像和链式映像——eg:数组和链表
2.2 数据类型
数据类型:是一组性质相同的值的集合以及定义在此集合上的一组操作的总称。
数据类型与定义在数据结构上的操作密切相关。
2.3 抽象数据类型
数据的抽象:1)计算机语言中十进制表示的数据是二进制的抽象;
2)高级语言中,定义的数据类型,如整型、字符型等;
3)定义更高级的数据抽象,如堆、栈、树和图等。
抽象数据类型(Abstract Data Type 简称ADT):是指一个数学模型以及定义在此数学模型上的一组操作。
一个抽象数据类型确定了一个模型,但将模型的实现细节(存储表示等)隐藏起来;它定义了一组操作,但将操作的实现过程(运算处理等)隐藏起来。
1.选择数学模型描述问题,确定解决问题的算法
2.为模型定义抽象数据类型,并用伪语言描述算法
3.确定抽象数据类型的实现方法, 用程序实现算法
3、算法和算法的量度
3.1 算法
算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性:1)有穷性 2)确定性 3)有输入 4)有输出 5)可行性
1.有穷性:算法应在有限步骤之内正常结束,且每步均能在有限时间内完成。
2.确定性:算法中的每一个步骤必须有确定含义,无二义性;
3.输 入:有多个或0个输入;
4.输 出:至少有一个或多个输出;
5.可行性:算法中所有操作应足够基本,均可通过已实现的基本运算经过有限次执行来完成。
算法描述的常用工具: 1.自然语言 2. 框图 3. 类语言(伪语言)
3.2 算法设计原则
正确性、可读性、健壮性、高效率和低存储量
3.3 算法效率的衡量方法和准则
评价算法的标准:评价一个算法主要看这个算法所占用机器资源的多少,而这些资源中时间代价与空间代价是两个主要的方面,通常是以算法执行所需的机器时间和所占用的存储空间来判断一个算法的优劣。
算法执行时间定义:一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。
分析:不是针对实际执行时间的精确地算出算法执行具体时间,而是针对算法中语句的执行次数做出估计,从中得到算法执行时间的信息。
语句频度定义:语句频度是指该语句在一个算法中重复执行的次数。
算法的时间复杂度定义:算法的时间复杂度,即算法的时间量度记做: T(n)=O(f(n))
算法中常用的时间复杂度频率计数有7种: O(1)常数型 O(n)线性型 O(n^2)平方型 O(^3)立方型 O(2^n)指数型 O(log2n)对数型 O(nlog2n)二维型
最坏时间复杂度:算法在最坏情况下的时间复杂度,即为分析估计算法在最坏情况下执行时间的上界。
算法空间复杂度定义:用空间复杂度作为算法所需存储空间的量度,记做: S(n)=O(f(n))