数据结构与算法小结

开发工具与关键技术:数据结构与算法
作者:杨泽平
撰写时间:2020、5、6

数据结构是计算机存储、组织数据的方式。数据结构主要研究对象是数据逻辑结构(逻辑结构又包括,线性结构、树形结构、图形结构)、数据物理结构、数据存储结构,我们常用的数据结构有:数组、栈、队列、链表、树、图、锥、散列表,建立合适的数据结构,设计好的算法,可以提高程序执行效率,所以,数据结构和算法在程序设计里起到重要的作用。
一个高效率的软件,需要有一个好的算法来支撑,算法的意义是对特定问题求解步骤的一种描述,它是指令的有限序列。其中每一条指令表示一个或多个操作。一个算法包含了五个特性,分别为有穷性、确定性、可行性、输入、输出。五个特性的含义指的是,有穷性:一个算法应该包含有限个的操作步骤;确定性:每一步必须有确切的含义,不能产生二义性;可行性:算法的步骤都能有效执行且得出确定结果;输入:从外界获取必要的数据,当然算法可以有零个或多个输入;输出:数据处理的结果,可以有一个或多个输出,注意没有输出的算法是毫无意义的。
算法设计的好坏关乎程序的执行效率,所以算法的设计要满足四个要求,分别是:
⑴ 正确性
正确性的含义是算法对于一切合法的输入数据都能够得出满足要求的结果,事实上要验证算法的正确性是极为困难的,因为通常情况下合法的输入数据量太大,用穷举法逐一验证是不现实的。所谓的算法正确性是指算法达到了测试要求。
⑵ 可读性
算法的可读性是指人对算法阅读理解的难易程度,可读性高的算法便于交流,有利于算法的调试和修改。通常增加算法的可读性是在书写算法时采用按缩进格式书写、分模块书写等方法可增加算法的可读性。
⑶ 健壮性
对于非法的输入数据,算法能给出相应的响应,而不是产生不可预料的后果。
⑷ 效率与低存储量需求
效率指的是算法的执行时间。对于解决同一问题的多个算法,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。存储量需求越小的算法效率越高。
满足这四个要求的算法才能保证算法的执行效率和保证程序的良好性。
数据结构中的线性表,
线性表是由n个相同的数据元素a1,a2····an组成的有限序列。其中n表示数据元素的个数,也称表的长度。
线性表的特征:
1、在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋,而仅有一个直接后继a2;
2、有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋an-1;
3、其余的内部结点ai(2≤i≤n-1)都有且仅有一个直接前趋ai-1。
线性表的基本运算:
1 求表长——求线性表中元素的个数。
2 遍历——从左到右(或从右到左)扫描(或读取) 表中的各元素。
3 按编号查找 找出表中第i个元素。
4 按特征查找- 按某个特定值查找线性表。
5 插入- 在第i个位置上(即原第i个元素前)插入一新元素。
6 删除- 删除原表中的第i个元素。
7 排序 按元素某特征值的递增 (或递减) 排序, 重排表中各元素。
数据结构中的堆栈和队列,
堆栈简称为栈,是限定只能在表的一端进行插入和删除操作的线性表。
在表中,允许插入和删除的一端称作“栈顶”,另一端称作“栈底” 。通常将元素插入栈顶的操作称作为 “入栈”(进栈或压栈),称删除栈顶元素的操作为“出栈”
存储结构有两种(1)顺序栈——采用顺序结构存储;(2)链栈——采用链式结构存储。
队列简称为队,是限定只能在表的一端作插入运算、在另一端作删除运算的线性表;在表中,允许插入的一端称作“队尾”,允许删除的另一端称作“队首”(或“队头”);通常将元素插入队尾的操作称作为入队列(或入队),称删除队首元素的操作为出队列(或出队)。
存储结构有两种(1)顺序队列——采用顺序结构存储;(2)链式队列——采用链式结构存储。
数据结构中的字符串,在数据结构中,串是一种在数据元素的组成上具有一定约束条件的线性表,即要求组成线性表的所有数据元素都是字符,所以说串是一个有穷的字符序列。
数据结构中的数组与矩阵,
数组是有序的元素序列,一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组可以有一维、二维以及多维等表现形式。
矩阵是一个按照长方阵列排序的复数或实数集合。
数据结构中的树,
树它是由n(n>=0)个有限结点组成一个具有层次关系的集合。他的特点是每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树;
数据结构中的图,
图是由顶点集合(vertex)及顶点间的关系集合组成的一种数据结构:Graph=(V,E)其中 是顶点的有穷非空集合;E是顶点之间关系的有穷集合,也叫做边(edge)集合。
图的存储结构:图的存储结构比线性表和树来说更为复杂,既要存储所有顶点的信息,又要存储顶点与顶点之间的所有关系,也就是边的信息。我们常说的“顶点的位置”或“邻接点的位置”只是一个相对的概念,图上任何一个顶点都可以看做初始顶点,任一顶点的邻接点之间不存在次序关系。
图的邻接矩阵和邻接表形式的存储
邻接矩阵:邻接矩阵这种存储结构采用两个数组来表示图。一个是一维数组,存储图中的所有顶
点的信息;另一个是二维数组,即邻接矩阵,存储顶点之间的关系。
邻接表:链式存储的方式,结合树的孩子表示法,将数组与链表相结合的存储方法称为邻接表。

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