《数据结构与算法》知识小结

开发工具与关键技术: VS  数据结构与算法
撰写时间:2019年4月28日

软件开发要多动脑筋、想到好的解决办法才能更快更好地编写出效率更高的程序。编写出一个高效率的处理程序,就需要解决如何合理地组织数据,建立合适的数据结构。设计较好的算法,来提高程序执行效率这样的问题。数据结构和算法这门课程的目的正是使学生更快地编写出更高效的程序。
瑞士著名的计算机科学家尼古拉斯·沃斯提出了“算法+数据结构=程序”的观点,这说明了数据结构的重要性。

一、 数据结构:就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算。

二、 算法:就是解决问题的方法,是程序设计的精髓,程序设计的实质就是构造解决问题的算法。算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

三、 线性表:由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

(1) 堆栈
栈的定义:堆栈简称为栈,是限定只能再表的一端进行插入和删除操作的线性表。
堆栈是一种特殊的线性表,以为它满足线性表的元素与元素之间的逻辑关系。
堆栈视图如下:
《数据结构与算法》知识小结_第1张图片
(2)队列
队列的定义:队列简称为对,是限定只能在表的一端作插入运算、在另一端作删除运算的线性表;在表中,允许插入的一端称作“队尾”,允许删除的另一端称作“队首”;通常将元素插入队尾的操作称作为入队列(或入队),称删除队首元素的操作为出队列(或出队)。
队列视图如下:
在这里插入图片描述
(3)字符串
字符串的定义:串是字符串的简称。在数据结构中,串是一种在数据元素的组成上具有一定约束条件的线性表,即要求组成线性表的所有数据元素都是字符,所以说串是一个有穷的字符序列。

四、 数组与矩阵
数组的基本概念:数组的每一个元素都属于同一个数据类型,用一个统一的数组名和下标来唯一地确定数组中的元素。
特殊矩阵:特殊矩阵是指矩阵中值相同的元素或者零元素的分布有一定规律。

五、 树型结构(非线性结构)
树是一种简单的非线性结构,所有元素之间具有明显的层次特性。

(1)二叉树
二叉树的定义:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。
遍历二叉树:以某种次序访问二叉树中的每个结点,且每个结点仅被访问一次。
访问:如查询结点数据域的内容、输出结点的数据、修改结点的数据或是执行对结点的其他操作。

设 访问根结点 记作T
遍历根的左子树 记作L
遍历根的左子树 记作
则可能的遍历次序有:TLR、TRL、LTR、RTL、LRT、RLT

(2)哈夫曼树
路径长度:两个结点之间的路径长度是连接两结点的路径上的分支数。
树的路径长度:根结点到各结点的路径长度之和
如图所示:哈夫曼树中,权值大的结点离根最近
《数据结构与算法》知识小结_第2张图片
六、 图
图是一种比线性表和树更加复杂的数据结构。
图的定义:图是由顶点集合及顶点间的关系集合组成的一种数据结构。

线性表、树、图三者的区别:
线性表:数据元素之间呈现一种线性关系,即每个元素只有一个直接前驱和一个直接后继。
树结构:结点之间是一种层次关系,即每个结点只有一个直接前驱,但可有多个直接后继。
图结构:每个结点即可以有多个直接前驱,也可以有多个后继

七、 查找
(1)静态查找
静态查找是指在静态查找表上进行的查找操作,查找满足条件的数据元素的存储位置或各
种属性。
A、 顺序查找:查找表的存储结构是线性表(顺序表或链表)
B、 折半查找:只适用于对有顺序表进行查找
C、 分块检索:分块查找又称索引顺序查找。它是一种性能介于顺序查找和二分查找之间的查找方法。

(2)动态查找:结构主要有二叉树结构和树结构两种类型。

(3)哈希查找(哈希表又称散列表)
哈希表存储的基本思想:以每个记录的关键字K为自变量,通过一种函数H(K)计算出一个函数值;把这个值解释为一块连续存储空间(即数组空间)的单元地址(即下标),将该记录存储到这个单元中;在此称该函数H为哈希函数或散列函数。
对于哈希函数技术,主要研究两个问题:
A、 如何设计哈希函数以使冲突尽可能少地发生。
B、 发生冲突后如何解决。

八、 排序
(1) 插入排序
直接插入排序的基本思想:
A、 开始时有序表中只包含一个元素,无序表中包含有n-1个元素。
B、 排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表。
C、 每一趟都是将一个记录插入到前面的有序段中,直到所有记录都插入到有序段中。
D、 需进行n-1躺。

(2) 交换排序
快速排序是一种交换排序,其基本思想是:从待排序序列的n个记录中任取一个记录R作为基准记录,以基准记录为界限,将待排序序列划分为两个子序列,所有关键字小于K的记录移到R的前面,所有关键字大于K的记录移到R的后面,这个过程称做一趟快速排序;然后用同样的方法对两个子序列排序,得到4个子序列;依次类推,直到每个子序列只有一个记录为止,此时就得到n个记录有序序列。

(3) 选择排序
选择排序的基本思想是:每一趟从待排序记录中选出关键字最小的记录,按顺序放到已排好序的子序列中,直到全部记录排序完毕。
选择排序有两种:直接排序和堆排序。

你可能感兴趣的:(《数据结构与算法》知识小结)