【数据结构与算法分析】基本理论概念总结
2015-12-25 22:47
393 查看
基本概念
数据:信息的载体,是所有能够被计算机识别、存储、加工处理的符号的总称。可以是数值数据,如整数、实数、复数等;也可以是非数值数据,如字符、文字、图形、音频、图像、语音等。
数据项:组成数据的不可分割的最小单位,如学生成绩表中的“学号”、“姓名”等。数据项具有一定的类型,其取值依据其类型而定。
数据元素:数据的基本单位。在不同条件下,数据元素又可称为元素、结点、顶点、记录等。例如,考试查分系统的学生成绩表中的一个记录(表中一行代表一条记录,一列代表一个字段。这里一条记录指一条数据元素,一个字段指一个数据项)、棋盘布局问题中状态树的一个状态、教学计划编排问题中的一个顶点等,都是一个数据元素。
数据对象:数据对象或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。
数据结构:指互相之间存在着一种或多种关系的数据元素的集合。数据结构设计数据元素之间的逻辑关系,数据在计算机中的存储方式和这些数据上定义的一组运算,一般称这三个方面为数据的逻辑结构、数据的存储结构和数据的运算。
数据逻辑结构一般分为以下四类:
集合(数据源同属一个集合。集合是元素关系极为松散的一种结构)
线性结构(数据元素之间一对一关系)
树结构(数据元素之间一对多关系)
图结构(也称网状结构。数据元素之间多对多关系)
数据存储结构由四种方式:
顺序存储方法——>是吧逻辑上相邻的元素存储在物理位置相邻的存储单元中,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构,通常借助于程序设计语言中的数组来实现。顺序存储结构是一种最基本的存储表示方法。
链式存储方法——>对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过相关联的指示来表示,由此得到的存储表示称为链式存储结构,通常借助于程序设计语言中的指针类型或引用类型来实现。
索引存储方法——>是在存储结点信息的同时,还建立附加的索引表。索引表中的每一项包含关键字和四肢,关键字是能够唯一标示一个元素的数据项,地址指示出数据元素所在的存储位置。索引存储主要是针对数据内容的存储,而不强调关系的存储,索引存储方法主要面向查找操作。
散列存储方法——>是以数据元素的关键字的值为自变量,通过散列函数计算出该元素的存储位置。索引存储也是针对数据内容的存储方式。
以上四种存储方法中,顺序存储方法和链式存储方法是最基本与最常用的。索引存储方法和散列存储方法在具体实现时,需要用到前两种方法。在实际应用中,一种逻辑结构可以有不同的存储方法,选用何种存储结构来表示相应的螺接结构要是具体情况而定,主要考虑运算的实现以及算法的时间、空间要求。
数据运算的两种类型
运算是对数据的处理。运算与逻辑结构紧密相连,每章逻辑结构都有一个运算的集合。数据的与暖是定义在数据的逻辑结构上的,但运算的具体实现实在数据的存储结构上进行的。
引用型运算:不改变数据结构中原有的数据元素的状态,指根据需要读取某些信息。
加工型运算:运算的结果会改变数据结构中原有的数据状态,如元素的内容、个数等。
递归法则
基准清醒:必须有一个基准情形,不用递归就能解出结果。例如在求解斐波那契数列的时候,我们就必须先要知道当n=1和n=2时的结果,后面的每步都需要这两个条件作为基础,也就是我们所说的基础情形。
定向推进:对于需要递归求解的情形,每一次递归调用向基准清醒推进。
设计前提:假设所有的递归调用都能运行。个人的理解就是,在有限次的递归调用之后,所有的递归都能进行下去,而不会出现运行到某一步突然出现意外情况程序不能继续运行的情况。
合成效益:在求解一个问题的同一个实例时,切勿在不同的递归调用中做重复的工作。
数据:信息的载体,是所有能够被计算机识别、存储、加工处理的符号的总称。可以是数值数据,如整数、实数、复数等;也可以是非数值数据,如字符、文字、图形、音频、图像、语音等。
数据项:组成数据的不可分割的最小单位,如学生成绩表中的“学号”、“姓名”等。数据项具有一定的类型,其取值依据其类型而定。
数据元素:数据的基本单位。在不同条件下,数据元素又可称为元素、结点、顶点、记录等。例如,考试查分系统的学生成绩表中的一个记录(表中一行代表一条记录,一列代表一个字段。这里一条记录指一条数据元素,一个字段指一个数据项)、棋盘布局问题中状态树的一个状态、教学计划编排问题中的一个顶点等,都是一个数据元素。
数据对象:数据对象或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。
数据结构:指互相之间存在着一种或多种关系的数据元素的集合。数据结构设计数据元素之间的逻辑关系,数据在计算机中的存储方式和这些数据上定义的一组运算,一般称这三个方面为数据的逻辑结构、数据的存储结构和数据的运算。
数据逻辑结构一般分为以下四类:
集合(数据源同属一个集合。集合是元素关系极为松散的一种结构)
线性结构(数据元素之间一对一关系)
树结构(数据元素之间一对多关系)
图结构(也称网状结构。数据元素之间多对多关系)
数据存储结构由四种方式:
顺序存储方法——>是吧逻辑上相邻的元素存储在物理位置相邻的存储单元中,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构,通常借助于程序设计语言中的数组来实现。顺序存储结构是一种最基本的存储表示方法。
链式存储方法——>对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过相关联的指示来表示,由此得到的存储表示称为链式存储结构,通常借助于程序设计语言中的指针类型或引用类型来实现。
索引存储方法——>是在存储结点信息的同时,还建立附加的索引表。索引表中的每一项包含关键字和四肢,关键字是能够唯一标示一个元素的数据项,地址指示出数据元素所在的存储位置。索引存储主要是针对数据内容的存储,而不强调关系的存储,索引存储方法主要面向查找操作。
散列存储方法——>是以数据元素的关键字的值为自变量,通过散列函数计算出该元素的存储位置。索引存储也是针对数据内容的存储方式。
以上四种存储方法中,顺序存储方法和链式存储方法是最基本与最常用的。索引存储方法和散列存储方法在具体实现时,需要用到前两种方法。在实际应用中,一种逻辑结构可以有不同的存储方法,选用何种存储结构来表示相应的螺接结构要是具体情况而定,主要考虑运算的实现以及算法的时间、空间要求。
数据运算的两种类型
运算是对数据的处理。运算与逻辑结构紧密相连,每章逻辑结构都有一个运算的集合。数据的与暖是定义在数据的逻辑结构上的,但运算的具体实现实在数据的存储结构上进行的。
引用型运算:不改变数据结构中原有的数据元素的状态,指根据需要读取某些信息。
加工型运算:运算的结果会改变数据结构中原有的数据状态,如元素的内容、个数等。
递归法则
基准清醒:必须有一个基准情形,不用递归就能解出结果。例如在求解斐波那契数列的时候,我们就必须先要知道当n=1和n=2时的结果,后面的每步都需要这两个条件作为基础,也就是我们所说的基础情形。
定向推进:对于需要递归求解的情形,每一次递归调用向基准清醒推进。
设计前提:假设所有的递归调用都能运行。个人的理解就是,在有限次的递归调用之后,所有的递归都能进行下去,而不会出现运行到某一步突然出现意外情况程序不能继续运行的情况。
合成效益:在求解一个问题的同一个实例时,切勿在不同的递归调用中做重复的工作。
相关文章推荐
- 链表、堆栈、队列的区别
- 数据结构(一)
- 数据结构学习笔记——绪论
- 数据结构——二叉树的实现
- 《算法竞赛入门经典2ndEdition 》例题5-1 大理石在哪儿(Where is the marble?, Uva10474)
- 数据结构实验之排序五:归并求逆序数 【OJ--3402】【归并排序】
- 数据结构实验之排序四:寻找大富翁 【OJ--3401】【堆排序】
- 公交线路管理 数据结构课程设计
- 数据结构--Chapter7(内排序)
- 数据结构——算法之(032)(求两个串中的第一个最长子串)
- 数据结构课程设计 学生成绩管理
- 数据结构课程设计—学生系统管理
- 数据结构课程设计学生成绩管理系统源代码
- 数据结构课程设计--“模拟图书管理系统的开发”
- 【数据结构】堆排序
- 数据结构实训代码部分
- 【数据结构】【排序】求第k大的数——用谢尔排序实现
- C++数据结构之图的深度和广度遍历
- 数据结构课程设计-家谱系统的简易开发
- 数据结构课程设计—图书信息管理系统