algorithm + data structures = programs
(处理问题的策略 + 问题的数学模型) = 程序设计:为计算机处理问题的一组指令集
数据结构的定义:描述 现实世界实体的数学模型 的表示和实现(带结构的数据元素的集合)
数据:计算机处理的符号(表示信息)的集合
数据元素:集合中的个体,数据项的集合
数据项:数据结构中讨论的最小单位
数据的四类逻辑结构:
1、线性结构
2、树形结构
3、图状结构
4、集合结构
数据结构的形式定义为:
数据结构是一个二元组 Data_Structure = (D, S) (D是数据元素的有限集,S是D上关系的有限集)
数据的存储结构:数据逻辑结构在存储器中的映象
数据元素的映象方法
关系的映象方法:(表示<x,y>的方法)
1、顺序映象:以存储位置的相邻表示后继关系(y的存储位置和x的存储位置之间差一个常量C)
C是一个隐藏值,整个存储结构中只含有数据元素本身的信息
2、链式映象:以附加信息(指针)表示后继关系
需要用一个和x在一起的附加信息指示y的存储位置
用高级语言进行程序设计是已经有的数据类型描述数据的存储结构,例如typedef int Long_int[3]
数据类型
定义:是一个值的集合和定义在此集合上的一组操作的总称
抽象数据类型 (Abstract Data Type,简称ADT)
定义:是指一个数学模型以及定义在此数学模型上的一组操作
ADT有两个重要特征:
1、数据抽象
用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)
2、数据封装
将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节
用抽象数据类型来描述数据结构
抽象数据类型的描述方法
抽象数据类型可用(D, S, P)三元组表示
其中,D是数据对象,S是D上的关系集,P是对D的基本操作集
抽象数据类型的表示和实现
抽象数据类型需要通过固有数据类型(高级编程语言中已事项的数据类型)来实现
算法和算法的衡量
一、算法
算法是为解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特征:
1、有限性
有穷步骤,有限时间
2、确定性(无二义性)
对于每种情况下,算法都有确切的规定
只要条件确定,只有一条执行路径
3、可行性
算法中的所有操作都必须做够基本,都可以通过已经实现的基本操作运算有限次实现之
4、有输入
算法加工的对象
5、有输出
算法进行信息加工的结构
算法设计的原则
1、正确性
a、程序中不含语法错误;b、程序对于几组输入数据能够得出满足要求的结构;
c、程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;
d、程序对于一切合法的输入数据都能得出满足要求的结果;
2、可读性
算法只要是为了人的阅读与交流,其次才是计算机的执行
1)、易于人得理解
2)、复杂程序易于隐藏错误和难以调试
3、健壮性
输入的数据非法时,算法进行相应处理。
处理错误的方法不应该时中断程序的执行,而应是返回一个表示错误或错误性质
的值,以便在更高的抽象层次上进行处理。
4、高效率与低存储量需求
算法的执行时间,算法执行过程中所需的最大存储空间,两者都与问题的规模有关。
三、算法效率的衡量方法和准则
1、身后统计法
缺点:1、必须执行程序 2、其它因素掩盖算法本质
2、事前分析估算法
和算法执行时间相关的因素:
1、算法选用的策略
2、问题的规模
3、编写程序的语言
4、编译程序产生的机器代码的质量
5、计算机执行指令的速度