数据结构:
概念:
反映一个数据的内部构成
数据由哪些成分数据构成,以什么方式构成,呈什么结构
基础:
逻辑结构:反映成分数据之间的逻辑关系
物理结构:数据结构反映成分数据在计算机内部的存储安排
数据操作:
内涵:
数据结构是数据存在的形式, 是信息的一种组织方式.
设计:
为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作
数据是指由有限的符号组成的元素的集合,结构是元素之间的关系的集合
逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构
表是线性结构的(全序关系)
树(偏序或层次关系)是非线性结构。
研究:
数据的各种逻辑结构和存储结构,以及对数据的各种操作
设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。
数据:
标准:根据数据结构分类
具有相同数据结构的数据属同一类。同一类数据的全体称为一个数据类型
数据类型用来说明一个数据在数据分类中的归属,是数据的属性,属性限定了数据的变化范围
不同的语言所定义的数据类型是不同的:
简单数据类型对应于简单的数据结构;
构造数据类型对应于复杂的数据结构
在复杂的数据结构里,允许成分数据本身具有复杂的数据结构,
因而,构造数据类型允许复合嵌套
指针类型对应于数据结构中成分数据之间的关系,表面上属简单数据类型,实际上都指向复杂的成分数据即构造数据类型中的数据,因此这里没有把它划入简单数据类型,也没有划入构造数
据类型,而单独划出一类。
按数据结构中的成分数据之间的关系,数据结构有线性与非线性之分。在非线性数据结构中又有层次与网状之分。
数据类型按照该类型中的数据所呈现的结构也有线性与非线性之分,层次与网状之分
抽象数据类型:
把数据类型和数据类型上的运算捆在一起,进行封装
抽象数据类型上定义的过程和函
数以该抽象数据类型的数据所应具有的数据结构为基础。
算法:
定义:运算序列
所有运算定义在一类特定的数据模型上,并以解决一类特定问题为目标
特征:
有限性:即序列的项数有限,且每一运算项都可在有限的时间内完成
确定性:即序列的每一项运算都有明确的定义
无二性:可以没有输入运算项,但一定要有输出运算项
可行性:即对于任意给定的合法的输入都能得到相应的正确的输出
编程语言的发展:
核心:算法的程序表达(算法要素的程序表达)
运算序列算法要素:
1).运算序列中各种运算的运算对象和运算结果的数据
2).运算序列中的各种运算
3). 运算序列中的控制转移
数据、运算、控制
衍生:
基础:算法的多变
1.运算序列中各种运算的运算对象和运算结果的数据
--简单:布尔值数据、字符数据、整数和实数数据等
--复杂:向量、矩阵、记录等数据
--更复杂:集合、树和图,还有声音、图形、图像等数据
2. 运算序列中的各种运算
运算种类:
--初等:赋值运算、算术运算、逻辑运算和关系运算等
--复杂:算术表达式和逻辑表达式等
--更复杂:有函数值计算、向量运算、矩阵运算、集合运算,
以及表、栈、队列、树和图上的运算等
运算的复合与嵌套
3. 控制转移:
在串行计算中,它只有顺序、分支、循环、递归和无条件转移等几种
机器语言:具体的计算机上的一个指令集
特征:
只接受算术运算、按位逻辑运算和数的大小比较运算等,对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代之
能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字中,还得一一分配它们的存储单元
控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧
每一条指令都以编码(指令码和地址码)的形式出现
汇编语言:
特征:
将机器语言的每一条指令符号化:指令码代之以记忆符号,地址码代之以符号地址,使得其含义显现在符号上而不再隐藏在编码中
摆脱了具体计算机的限制,可在不同指令集的计算机上运行,只要该计算机配上汇编语言的一个汇编程序
高级语言的设计:
内涵:先表达成一种中介语言,然后转成机器语言
感悟:
规范性:语言之间的翻译过程有章可循,通过设计一些编译程序,由计算机来完成语言之间的翻译过程
特征:
数据、运算和控制三方面的表达中引入许多接近算法语言的概念和工具,大大地提高抽象地表达算法的能力
算法表达方式:
1.缺省的顺序控制
2.条件(分支)控制:"if表达式(为真)then S1 else S2;
3. 选择(情况)控制:Case 表达式 of
4. 循环控制:
5. 函数和过程的调用,包括递归函数和递归过程的调用
6. 无条件转移goto