数据结构
勇敢无畏的活着
这个作者很懒,什么都没留下…
展开
-
二叉树的创建及遍历
这里创建二叉树运用了即遍历,都进行了函数的重载,并且遍历的时候,只是顺序的改变;难点:层次遍历的方法,在这里进行了一下总结。其中包括vector , queue, deque, 等多种方法:[cpp] view plaincopy#include "iostream" #include "vector" #include转载 2015-01-04 22:24:11 · 441 阅读 · 0 评论 -
三种快速排序以及快速排序的优化
一、 快速排序的三种方法1、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot)(2)分割操作:以该基准在序列中的实际位置转载 2015-07-08 21:47:59 · 681 阅读 · 0 评论 -
几种常见的数据结构的操作性能对比
数组、有序数组、链表、有序链表、二叉树(一般情况)、二叉树(最坏情况)、平衡树(一般情况和最坏情况)、哈希表等查找、插入、删除、遍历等过程的时间复杂度总结如下表:原创 2015-04-07 20:22:53 · 721 阅读 · 0 评论 -
几种常见的排序算法对比
排序法 平均时间 最差情形 稳定度 额外 空 间原创 2015-04-07 21:21:52 · 483 阅读 · 0 评论 -
【查找结构3】平衡二叉查找树 [AVL]
在上一个专题中,我们在谈论二叉查找树的效率的时候。不同结构的二叉查找树,查找效率有很大的不同(单支树结构的查找效率退化成了顺序查找)。如何解决这个问题呢?关键在于如何最大限度的减小树的深度。正是基于这个想法,平衡二叉树出现了。 平衡二叉树的定义 (AVL—— 发明者为Adel'son-Vel'skii 和 Landis) 平衡二叉查找树,又称 AVL树。 它除了具备转载 2015-04-07 20:14:32 · 367 阅读 · 0 评论 -
数据结构的选择-“数组、链表、树、哈希表”选哪个(性能比较)?
通用数据结构貌似包括:数组、链表、树(二叉树、平衡树)、哈希表。之所以称之为通用数据结构是因为它们通过关键字的值来存储、查找数据。现实中,要想存储人事记录、货存记录、合同表或销售业绩表等数据,则只需要一般用途的数据结构,即通用数据结构即可。至于具体使用哪一种数据结构,可以参考(哥,只是参考)下图:请不要从上图中得出“平衡树”是最好的结论。咱还是要坚持“具体问题,具体分析”的转载 2015-04-01 10:22:31 · 1201 阅读 · 0 评论 -
有向图的拓扑排序
对于拓扑排序,即找到起始点 即入度等于0 ,的情况下到 最终的点的检索过程,但是其中图中不能有环路,如果有环路的情况下,将会出现入度都相互相等的情况,这样就会有点无法输出。所以拓扑排序也可以用来检验有向图中那个是否有环(这还得引申一下)首先先拓扑排序1)继续利用,顶点, 边情况 ,即顶点容器vector , 来构建一个图2)找到这个图的没有入度的那个点,即没有其他的转载 2015-01-04 22:31:32 · 772 阅读 · 0 评论 -
并查集
实现代码:[cpp] view plaincopyclass UnitFind { enum{Max_size = 101}; public: UnitFind() { ans = 0; int i = 0; f转载 2015-01-04 22:26:31 · 390 阅读 · 0 评论 -
二叉树的查找
二叉查找树的一些实现,一些心得都嵌入其中的注释[cpp] view plaincopy#include "iostream" using namespace std; //因为查找树左小右大 template class T> class BinarySearchTree { public:转载 2015-01-04 22:25:24 · 434 阅读 · 0 评论 -
模板类 stack 的理解 积累
template > class stack;参数:T:元素类型Container:用于存储和访问元素的底层容器类型。 STL学习之stack适配器LIFO stackstack是一个容器适配器类型,它被设计成LIFO(最后一个进入栈的,第一个出),并且元素的插入和提取操作只能在容器的尾部。stack作为容器转载 2015-01-04 22:23:07 · 768 阅读 · 0 评论 -
有向图起点s到目标点t的所有路径
利用前面建立的结构,在这里利用这写顶点结构,边的建立结构,边数,顶点数, 即种类,和用于存储顶点的一个vector容器,我采取的方法类似于,深度优先搜索:1)首先建立了一个vector 用于存储顶点, 2)将s起点放入vector 中,3)对他所指向的邻接进行查找,卡纳可能是否有那个目标点tar,如果有的话,则按s->t的顺序进行输出4)如果没有目标点的话,转载 2015-01-04 22:30:51 · 5408 阅读 · 0 评论 -
平衡二叉树
[cpp] view plaincopy#include "iostream" #include "cmath" using namespace std; //首先分析了这几种旋转,发现都和平衡因子有关系,当一个结点平衡因子为2的时候,就该旋转了。 /*左旋之后,K1子节点的右枝上如果有结点给予K2,左枝上的结点保持不变; 右转载 2015-01-04 22:25:44 · 429 阅读 · 0 评论 -
图的遍历—深度、广度优先搜索
转载 2015-01-04 22:29:30 · 509 阅读 · 0 评论 -
Trie树
Trie树 Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。一.Trie树的原理 利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。 下面以英文单词构建的字典树为例,这棵Trie树中每个结点包括26个孩子结点,因为总共有26个英文字母(假设单词都是转载 2015-01-04 22:27:37 · 511 阅读 · 0 评论 -
B-树、B+树、红黑树
B-树B-tree树即B树,B即Balanced,平衡的意思,B-树又称为多路平衡查找树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。一、定义B-树是一种多路搜索树(并不一定是二叉的)1970年,R.Bayer和原创 2015-07-08 17:59:17 · 4472 阅读 · 0 评论