
数据结构与算法
从考研复习开始记录
夕阳下的浪客zurry
尽管独行,但依然珍惜每一天,每一个人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法之普里姆算法
思想:选取图中任意一个顶点,把它看成一棵树,并在与此树相接的边中选取一个权值最小的边,并将与这条边相接的另一个顶点也纳入树中,得到了一颗有两个顶点的树,以此类推,知道访问完图中所有的顶点并纳入树中为止;普里姆算法构造最小生成树的过程中:需要构造两个数组vset[ ]和lowcost[ ] 。vset[ i ] = 1表示顶点 i 已经被纳入树中,vset[ i ] = 0表示顶点 i 还未被纳...原创 2020-04-17 23:15:13 · 347 阅读 · 0 评论 -
数据结构与算法之广度优先遍历
类似于树的层次遍历,给定起始顶点v,然后选取与v相连的顶点w1,w2……wn进行访问,再依次访问w1,w2……wn的所有邻接节点,直到所有节点被访问完;void BFS(AGraph *G, int v, int visit[maxsize]){ ArcNode *p; int que[maxsize],front = 0,rear = 0; //定义队列的简单写法; int j; ...原创 2020-04-16 23:05:15 · 197 阅读 · 0 评论 -
数据结构之图的存储结构
1.邻接矩阵用二维数组表示A[ i ][ j ] = 1,表示 i 和 j 之间存在边或弧,i 与 j邻接;A[ i ][ j ] = 0,表示 i 和 j 不邻接;struct VertexType{ int no; //顶点编号; char info; //顶点其他信息,默认为char;};struct MGraph{ int edges[maxSize][maxSi...原创 2020-04-14 22:14:12 · 143 阅读 · 0 评论 -
数据结构与算法之中序线索二叉树
对线索二叉树的结构定义如下:struct Node{ int data; int ltag,rtag; //线索标记; Node* lchild; Node* rchild;};如果ltag = 0,则 lchild为指针,指向节点的左孩子,若ltag = 1,则 lchild为线索,指向节点的直接前驱;如果rtag = 0,则 rchild为指针,指向节点的右孩子,若rta...原创 2020-04-11 23:06:12 · 297 阅读 · 0 评论 -
数据结构之二叉树的遍历
先序遍历:void preorder(node* root){ if(root != NULL) { Visit(root); //假设Visit()函数已经定义; preorder(root->lchild); preorder(root->rchild); }}中序遍历:void inorder(node* root){ if(root !=...原创 2020-04-08 17:18:13 · 174 阅读 · 0 评论 -
数据结构之二分查找
二分查找之前应用在折半插入和排序归并排序中过,道理是一样的,具体代码如下:int BinSearch(int A[], int low, int high,int k){ int mid; while(low <= high) { mid = (low+high)/2; //mid为low和high的中间值; if(A[mid] == k) //如果中间值等于k,则返...原创 2020-04-07 22:55:03 · 121 阅读 · 0 评论 -
数据结构与算法之归并排序
归并排序与其他交换排序和选择排序不一样,是将两个或两个以上的有序表合并为一个新的有序表;以下是其C语言代码:void Merge(int A[], int low, int mid, int high){ int i,j,k; int *B = ( int*)malloc((high-low+1)*sizeof(int)); for(int k = low; k <= high;...原创 2020-04-01 16:00:10 · 122 阅读 · 0 评论 -
数据结构与算法之堆排序
堆排序有大根堆和小根堆,这里只介绍大根堆以下是其C语言代码:首先是调整堆的元素:void HeadAdjust(int A[], int k, int len) { int i; A[0] = A[k]; //A[0]为临时空间,相当于“哨兵” for(i = 2*k; i < len; i*= 2) //i = 2*k的意思是访问子树,i *= 2的意思是访问当...原创 2020-03-31 17:21:36 · 154 阅读 · 0 评论 -
数据结构与算法之简单选择排序
字如其名,这是一种简单的算法C语言代码如下:void SelectSort(int A[], int n){ int i,j,k; int temp; for(i = 0; i < n; i++) { k = i; //每次从已排序的序列选取最后一个元素与后面未排序的序列做对比 for(j = i+1; j < n; ++j) { if(A[k] ...原创 2020-03-30 17:12:03 · 152 阅读 · 0 评论 -
数据结构与算法之快速排序
快速排序属于“交换类”的算法,和冒泡算法一样,比冒泡算法更高效其C语言代码如下:void QuickSort(int A[], int low,int high){ int i,j,temp; i = low; j = high; if(low < high) { temp = A[low]; while(low < high) { while(j &...原创 2020-03-30 17:05:08 · 86 阅读 · 0 评论 -
数据结构与算法之冒泡排序
其基本思想为从后往前(或从前往后)两两比较相邻元素的值,若为逆序(A[i-1]>A[i]),则交换他们,直到序列比较完;C语言代码如下:void BubbleSort(int A[], int n){ int i,j,temp,flag; for(i = 0; i < n; i++) { flag = false; //表示本次冒泡是否发生过交换的标志 f...原创 2020-03-29 17:35:32 · 180 阅读 · 0 评论 -
数据结构与算法之希尔排序
希尔排序又称“缩小增量排序”,其基本思想是将排序表分割成形如L[i,i+d,i+2d,…,i+kd]的特殊子表,即将相隔某个增量的数据组成一个子表,对各个子表进行直接插入排序,当整个表的元素已经基本有序时,,再对整个表进行一次直接插入排序;C语言代码如下:void ShellSort(int A[],int n){ int i,j,dk,temp; for(dk = n/2; dk &g...原创 2020-03-29 17:10:52 · 97 阅读 · 0 评论 -
考研数据结构与算法之折半插入排序
C语言代码:void InsertSort(int A[], int n){ int i,j,low,mid,high; for(int i = 2; i <= n; i++) { A[0] = A[i]; low = 1; high = i - 1; while(low <= high) { mid = (low + high)/2; if(...原创 2020-03-29 15:52:34 · 219 阅读 · 0 评论 -
考研数据结构与算法笔记之直接插入排序
话不多说,直接上代码,以下是C语言的代码:void InsertSort(int R[], int n){ int i,j; int temp; for(int i = 1; i < n; i++) { temp = R[i]; //将数组分为已排序的序列和未排序的序列,temp取未排列序列的第一个元素; j = i - 1; //下标j为已排列序列的最后一个元素的...原创 2020-03-28 21:18:58 · 154 阅读 · 0 评论