数据结构
文章平均质量分 70
想作会飞的鱼
~~~
展开
-
栈结构应用的两个实例
两个实例来自Java数据结构和算法.(第二版)第四章1、单词逆序。 要求从控制台读入一串字符,按回车结束输入,同时显示其逆序字符串。对于颠倒顺序的操作,用栈来解决是很方便的。具体思想是把字符串中的每一个字符按顺序存入栈中,然后再一个一个的从栈中取出。这时就是按照逆序取出的字符串。 // reverse.java// stack used to reverse a stri原创 2017-01-05 09:32:46 · 1331 阅读 · 0 评论 -
红黑树深入剖析及Java实现(转自知乎美团点评技术团队)
红黑树是平衡二叉查找树的一种。为了深入理解红黑树,我们需要从二叉查找树开始讲起。BST二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值要比父节点的值大。它的高度决定了它的查找效率。在理想的情况下,二叉查找树增删查改的时间复杂度为O(logN)(其中N为节点数),最坏的情况下为O(N)。当它的高度为logN+1时,我转载 2017-01-12 17:09:12 · 3725 阅读 · 0 评论 -
2-3-4树和红黑树
一、2-3-4树和红黑树的关系可以证明2-3-4树和红黑树在数学上是同构(等价)的。在历史上,也是2-3-4树先被提出来,后来红黑树由它发展而来。二、如何把2-3-4树转为红黑树有三条规则分别对应有2,3,4个子节点的情况:1、若该节点有两个子节点,则把该节点转为红黑树中的黑色节点。2、若该节点有三个子节点,则节点中存有两个数据项,将这节点转为两个节点中来存储这两个数据原创 2017-01-13 10:02:02 · 1378 阅读 · 0 评论 -
2-3-4树的java实现
一、什么是2-3-4树2-3-4树和红黑树一样,也是平衡树。只不过不是二叉树,它的子节点数目可以达到4个。每个节点存储的数据项可以达到3个。名字中的2,3,4是指节点可能包含的子节点数目。具体而言:1、若父节点中存有1个数据项,则必有2个子节点。2、若父节点中存有2个数据项,则必有3个子节点。3、若父节点中存有3个数据项,则必有4个子节点。也就是说子节点的数目是父节点中数据原创 2017-01-12 21:48:03 · 4141 阅读 · 1 评论 -
哈希表的java实现
一、为什么要用哈希表树的操作通常需要O(N)的时间级,而哈希表中无论存有多少数据,它的插入和查找(有时包括删除)只需要接近常量级的时间,即O(1)的时间级。但是哈希表也有一定的缺点:它是基于数组的,数组创建后难以扩展。而某些哈希表在基本填满时,性能下降明显,所以事先必须清楚哈希表中将要存储多少数据。而且目前没有一种简便的方法可以对哈希表进行有序(从大到小或者从小到大)的遍历,除非哈希表本身原创 2017-01-17 16:36:58 · 8791 阅读 · 1 评论 -
二叉树之哈夫曼树
一、定义节点之间的路径长度:在树中从一个结点到另一个结点所经历的分支,构成了这两个结点间的路径上的经过的分支数称为它的路径长度。树的路径长度:从树的根节点到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。树的带权路径长度(W原创 2017-01-12 16:58:45 · 1156 阅读 · 0 评论 -
九大基础排序总结与对比
请尊重个人劳动成果,转载注明出处,谢谢! http://blog.csdn.net/amazing7/article/details/51603682##一、对比分析图均按从小到大排列k代表数值中的”数位”个数n代表数据规模m代表数据的最大值减最小值 稳定性:稳定排序算法会让原本有相等键值的纪录维持相对转载 2017-01-10 09:15:20 · 399 阅读 · 0 评论 -
递归应用之归并排序
算法分析 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。基本思路: 先递归的把数组划分为两个子数组,一直递归到数组中只有一个元素,然后再调用函数把两原创 2017-01-09 14:47:09 · 1970 阅读 · 0 评论 -
递归应用之汉诺塔
问题描述: 有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在下,小的在上(如图)。把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。描述简化:把A柱上的n个盘子移动到C柱,其中可以借用B柱。问题思路:1.要把A上面的N个盘子移动到C上,而且移动过程中必原创 2017-01-09 10:15:22 · 367 阅读 · 0 评论 -
利用栈结构求取后缀表达式的值
后缀表达式的求值准则:从左到右依次读取表达式,每遇到一个操作符,就读取该操作符之前的最后两个操作数,计算其值并把计算结果作为一个新的操作数,然后继续向后读取直到结束。从过程上可以看出,优先计算的是后出现的操作数,符合栈结构的特点,所以可以用栈结构来实现。具体来说,用一个栈来存储操作数,每遇到一个操作符,就执行两次出栈操作。然后把计算的结果在推入栈中。当扫描完整个后缀表达式后,栈中就只剩一个原创 2017-01-06 09:01:18 · 481 阅读 · 0 评论 -
利用栈结构生成后缀表达式
利用栈结构来构建后缀表达式关于后缀表达式,推荐博客http://blog.csdn.net/antineutrino/article/details/6763722/博客中详细介绍了表达式的生成过程。这里作简要介绍。后缀表达式的生成准则:利用该准则转换A*(B+C)利用该准则转换A+B*C利用该准则转换A+B-C有了这个准则,我们原创 2017-01-05 17:02:44 · 966 阅读 · 0 评论 -
排序算法
看到一个讲排序算法的博客,讲的很不错,记录收藏之。http://www.cnblogs.com/jingmoxukong/tag/%E6%8E%92%E5%BA%8F/原创 2017-01-04 09:51:30 · 493 阅读 · 0 评论 -
堆结构和堆排序的Java实现
一、什么是堆堆是一棵顺序存储的完全二叉树。关于完全二叉树的定义,其实十分简单。我们都知道满二叉树,也就是所有非叶子结点的节点必有左右两个子节点的树。对于一个完全二叉树而言,如果按照从上到下、从左到右的顺序遍历这棵树,如果遍历的顺序和其对应的满二叉树(把非满的节点用一个预设值填满)完全一致的话,那么这棵树就是完全二叉树。一个通俗的描述就是:一棵树除了最后一层之外的其他每一层都被完全填充,并且所有原创 2017-07-17 14:16:24 · 449 阅读 · 0 评论