前言:
此时你们对“算法的输入和输出都可以有零个或多个”大致比较着重,同学们都想要学习一些“算法的输入和输出都可以有零个或多个”的相关文章。那么小编同时在网摘上搜集了一些有关“算法的输入和输出都可以有零个或多个””的相关知识,希望大家能喜欢,看官们快快来了解一下吧!数据结构的研究内容无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题描述非数值计算问题的数学模型的数学方程,而是诸如表、树和图之类的具有逻辑关系的数据数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科数据结构的基本概念
数据
定义:是能输入计算机且能被计算机处理的各种符号的集合信息的载体是对客观事物符号化的表示能够被计算机识别、存储和加工分类数值型数据:整数、实数等非数值型数据:文字、图形、图像、声音等
数据元素
定义:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理也简称元素,或称为记录、结点或顶点一个数据元素可由若干数据项组成
数据项
构成数据元素不可分割的最小单位
数据、数据元素、数据项三者之间的关系:数据>数据元素>数据项
例:学生表>个人记录>学号、姓名······
数据对象
定义:是数据相同的元素的集合,是数据的一个子集数据结构的三要素数据结构包括以下三个方面的内容数据结构之间的逻辑关系,也称逻辑结构数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现数据结构的两个层次逻辑结构描述数据之间的逻辑关系与数据的存储无关,独立于计算机是从具体问题抽象出来的数学模型物理结构(存储结构)数据元素及其关系在计算机存储器中的结构(存储方式)是数据结构在计算机中的表示逻辑结构与存储结构的关系存储结构是逻辑关系的映像与元素本身的映像逻辑结构是数据结构的抽象,存储结构是数据结构的实现两者综合起来建立了数据元素之间的结构关系逻辑结构的种类划分方法一线性结构:有且只有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继例如:线性表、栈、队列、串非线性结构:一个结点可能有多个直接前驱和直接后继例如:树、图划分方法二——四类基本逻辑结构集合结构:结构中的数据元素之间除了同属一个集合的关系外,无任何其他关系线性结构:结构中的数据元素之间存在着一对一的线性关系树形结构:结构中的数据元素之间存在着一对多的层次关系图状结构(网状结构):结构中的数据元素之间存在着多对多的任意关系存储结构的种类顺序存储结构用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示C语言中用数组来实现顺序存储结构链式存储结构用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示C语言中用指针来实现链式存储结构索引存储结构在存储结点信息的同时,还建立附加的索引表散列存储结构根据结点的关键字之间计算出该结点的存储地址数据类型和抽象数据类型数据类型的作用约束变量或常量的取值范围约束变量或常量的操作
数据类型
定义:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称
抽象数据类型(ADT)
定义:是指一个数学模型以及定义在此数学模型上的一组操作由用户定义,从问题抽象出数学模型(逻辑结构)还包括定义在数据模型上的一组抽象运算(相关操作)不考虑计算机内的具体存储结构与运算的具体实现算法抽象数据类型的形式定义抽象数据类型可用(D,S,P)三元组表示D是数据对象S是D上的关系集P是对D的基本操作集定义格式1
2
3
4
5
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
} ADT 抽象数据类型名基本操作的定义格式参数表:赋值参数,只为操作提供输入值引用参数以&打头,除可提供输入值外,还将返回操作结果初始条件:描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。若初始结果为空,则省略之操作结果:说明操作正常完成之后,数据结构的变化状况和应返回的结果1
2
3
基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
举例
Circle的定义1
2
3
4
5
6
7
8
9
10
11
12
13
ADT Circle{
数据对象:D={r,x,y|r,x,y均为实数}
数据关系:R={<r,x,y>|r是半径,<x,y>是圆心坐标}
基本操作:
Circle(&C,r,x,y)
操作结果:构造一个圆
double Area(C)
初始条件:圆已存在
操作结果:计算面积
double Circumference(C)
初始条件:圆已存在
操作结果:计算面积
} ADT Circle抽象数据类型的表现与实现用已有的数据类型定义描述它的存储结构用函数定义描述它的操作
例:抽象数据类型“复数”的实现
123456789
typedef struct{ float realpart; /*实部*/ float imagpart; /*虚部*/} Complex; /*定义复数抽象类型*/void assign(Complex *A,float real,float imag){ A->realpart=real; /*实部赋值*/ A->imagpart=imag; /*虚部赋值*/}算法和算法分析算法的基本概念算法的定义:对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作算法的描述自然语言:英文、中文流程图:传统流程图、NS流程图伪代码:类C语言程序代码:C、Java算法的特性有穷性确定性可行性输入:零个或多个输入输出:一个或多个输出算法效率时间效率空间效率时间效率和空间效率之间有时候是矛盾的算法的时间复杂度时间效率的度量事后统计事前统计执行一种简单操作(如赋值、比较、移动等)所需的时间与算法中进行简单操作次数的乘积算法运行时间=$\sum$每条语句频度*单位时间算法的空间复杂度算法原地工作:算法所需内存空间为常量函数递归调用时,空间复杂度=递归调用的深度