![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
一只特立独行的.喵
理想很美,很想实现
展开
-
数据结构--图--的小总结
图2019年7月22日22:30(1)图的简单概念顶点(vertex):图中的数据元素,V是顶点的一个有穷非空集合VR:顶点关系的集合。弧(Arc):若<v,w>属于VR, 则<v,w>表示从v到w的一条弧,弧是有向的,边(Edge)是无向有向图(Digraph):弧<v,w>为有序对无向图(Undigraph):边(v,w)为无序对完全图(C...原创 2019-07-24 18:36:34 · 280 阅读 · 0 评论 -
堆排序
堆排序(Heap Sort)堆排序是一种树形选择排序,在排序过程中将待排记录r[1…n]看成是一颗完全二叉树的顺序结构存储,利用完全二叉树中双亲结点和孩子结点之间的关系,在当前无序的序列中选择关键字最大或者最小的记录。是不稳定排序。堆排序是使用的完全二叉树中大根堆(小根堆)的堆顶记录最大(最小)的性质进行排序的。算法步骤:1.按定义将待排记录r[0…n]调整为大根堆,交换r[0]与r[...原创 2019-08-25 22:22:37 · 1918 阅读 · 2 评论 -
快速排序
快速排序(Quick Sort):快速排序是由冒泡排序改进得到的。在待排序的n个记录中任取一个记录(通常为第一个记录)作为枢轴(或支点),设其关键字为key。经过一趟排序后,把所有关键字小于key的记录交换到前面,把所有关键字大于key的记录交换到后面,结果将待排序记录分成两个子表,最后将枢轴放在分界处的位置。然后,分别对左右子表重复上面的过程,直到每个子表只有一个记录时,排序完成。图解:...原创 2019-08-21 13:55:28 · 618 阅读 · 0 评论 -
归并排序
归并排序(Merging Sort):归并排序就是将两个或者两个以上的有序表合并成一个有序表的过程。将两个有序表合成一个有序表的过程称为称为2路归并。归并排序是稳定排序。思想:假设初始化序列有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2(往上取整)个长度为2或者1的有序子序列,再两两归并,……,如此重复,直到得到长度为n的有序序列。图解:代码实...原创 2019-08-25 13:16:18 · 143 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort):是一种最简单的交换排序方法,它通过两两比较相邻的关键字,如果逆序,则进行交换,从而使关键字小(或者大)的记录如气泡一般逐渐往上“漂浮”(左移)。示例图:代码示例(c++版):#include<iostream>using namespace std;int main(){ //初始数组 int data[] = {49...原创 2019-08-20 16:06:57 · 111 阅读 · 0 评论 -
希尔排序
希尔排序(Shell’s Sort):希尔排序又称为"缩小增量排序(Diminishing Increment Sort)",属于插入排序的一种。主要从两个方面提升插入排序的性能,一是“减少记录个数“,一是”使记录基本有序“。但是记录跳跃式移动导致不稳定。算法步骤:实质上是采用分组插入的方法。先将整个待排记录序列分割成几组,从而减少参与直接插入排序的数量,对每组分别进行插入排序,然后增加每组...原创 2019-08-24 11:55:57 · 196 阅读 · 0 评论 -
数据结构 队列
队列:具有一定操作约束的线性表插入和删除操作:只能在一段插入,而在另一端删除。数据插入:入队数据输出:出队先进先出原则1.定义队列:typedef struct{ int Data[MAXSIZE]; int front; //头元素记录变量 int rear; //尾元素记录变量}Queue;Queue *PtrQ;2.常用操作:(1)初始化:Queue ...原创 2019-08-11 00:17:16 · 115 阅读 · 0 评论 -
直接插入排序
直接插入排序(Straight Insertion Sort)直接插入排序是一种最简单的排序方法,基本操作是将一条记录插入到已近排好序的有序表中,从而得到一个新的,记录数增加1的有序表。是稳定排序。算法步骤:(1)设待排记录存放在数组r[0…n]中,r[0],是一个有序序列。循环n-1次,每次使用顺序查找法,查找ri在已排好序的序列r[0…i-1]中的位置,然后将r[i]插入到r[0…...原创 2019-08-23 18:58:28 · 186 阅读 · 0 评论 -
数据结构 堆栈 实现中缀表达式求值
堆栈(Stack):具有一定操作约束的线性表,即只在一端(栈顶,Top)做插入,删除。插入数据:入栈(Push)删除数据:出栈(Pop)先入后出原则:Last In First Out示例图:[外链图片转存失败(img-u4pafezE-1565436777479)(D:/youdao_picture/stack.jpg)]栈的顺序存储实现:栈的顺序存储实现通常由一个一维数组和一...原创 2019-08-10 19:35:15 · 513 阅读 · 0 评论 -
数据结构 数组 链表详解
线性表(Linear List):概念:由同类数据元素构成的有序序列的线性结构。表中元素个数称为线性表的长度线性表没有元素时,称为空表表起始位置称为表头,表结束位置称为表尾数组:线性表的顺序存储实现Dataa1a2a3…a(i)a(i+1)…//MAXSIZE表示数组的长度//Last表示数组最后一个元素的下标typedef struct{...原创 2019-08-08 23:43:41 · 461 阅读 · 0 评论 -
二叉树的前序中序后序遍历图解
前序遍历图解:前序遍历结果:ABDECF中序遍历图解:中序遍历结果:BDAC后序遍历图解:后序遍历结果:DBCA前序中序后序遍历代码C++版示例二叉树示例代码:#include<iostream>using namespace std;//使用c++模板template <typename T> //...原创 2019-08-12 22:22:49 · 1896 阅读 · 0 评论