
数据结构与算法
文章平均质量分 58
茂树茂树
这个作者很懒,什么都没留下…
展开
-
静态链表实现
//静态链表实现//====================================================#include<stdio.h>#define MaxSize 100#define null 0typedef int ElementType;typedef int Position;struct Node {union{Element...原创 2016-02-14 18:18:35 · 426 阅读 · 0 评论 -
红黑树
红黑树由于二叉搜索树不加限制的情况下在处理基本动态集合操作时,可能使得二叉树的高度变得越来越大,效率有可能比线性表执行效率还慢。 红黑树(R-B Tree)是 “平衡” 二叉搜索树的一种方式,即对二叉搜索树的基本动态集合操作进行了限制(限制其任意操作都要尽可能的保持 树的高度 合理化),那么将二叉搜索树限制成什么样呢,看定义。红黑树的定义:一棵红黑树是满足下面红黑性质...原创 2016-02-13 11:26:51 · 1051 阅读 · 1 评论 -
图基本性质,BFS,DFS
图的表示:图的表示有两种形式:邻接链表表示和邻接矩阵表示。邻接链表表示: 一般用于稀疏图中,空间复杂度为 0(V+E),邻接链表表示法的鲁棒性很高,可以对其进行简单修改来支持许多其他的图变种,同时也很容易的附加各种属性。但是邻接链表却不能很快的判断一条边是否是在图中。邻接矩阵表示:一般用于稠密图中,特别是在最短路算法中得到应用,空间复杂度为 0(V^2),相比邻接链表空间复杂度却高很多,但...原创 2016-01-13 20:55:30 · 978 阅读 · 0 评论 -
完全二叉树,堆,堆排序,优先队列
完全二叉树1、定义:对树中结点从上到下从左到右顺序进行编号,且编号为i的结点与完美二叉树中编号为i的结点在二叉树中位置相同。2、完全二叉树的特点:(1) 叶结点只能出现在下层和次下层且最下层的叶子结点出现在树的左部。(2) 由特性,适合以数组的形式进行存储,并且父节点和左右儿子有一定关系便于访问。 #define LEFT(i) (i*2) ...原创 2015-11-25 21:19:34 · 1868 阅读 · 0 评论 -
插入排序
插入排序是一种内部排序,所以空间复杂度为0(1)并不增加额外的空间,并且是稳定的排序,时间复杂度为0(n2);插入排序对于每个元素Pj来说,总是比较 j 次,所以 = 0(n2); 插入排序之所以复杂,关键在于比较和挪动位置的次数的增加,这也是能够优化的地方。所以,插入排序适合于集合元素中秩的和比较小,或者元素的个数不多(n<= 30)的情况。 插入排序代码:...原创 2015-12-24 13:07:40 · 500 阅读 · 0 评论 -
快速排序
<span style="font-size:18px;">#include <iostream>#define SWAP(a,b) ( (a)==(b) ? ( (a) = (b) ) : ( (a)^=(b)^=(a)^=(b) ) )//注意加括号以及判断是否相等typedef int elementType;using namespace std;vo...原创 2015-12-24 15:34:36 · 391 阅读 · 0 评论 -
归并排序
//归并排序非递归void merge(elementType initList[], elementType mergeList[], int i, int m, int n)//归并两个有序的子表{ //i为第一个子表开始的位置m第...原创 2015-12-29 16:30:43 · 346 阅读 · 0 评论