算法及数据结构
文章平均质量分 81
奋力向上游
喜阅武侠,爱交游。低调而不沉默。
展开
-
查找与排序-平衡二叉排序树
平衡二叉排序树又称AVL树,跟同学讨论时,发现AVL原是其发明人的简称。单纯的排序树有可能出现严重倾斜的情况。以数字序列1 9 8 9 10为例。这样会对查找性能造成很大的影响,故平衡化处理。下面假定你对平衡二叉树有所了解,直接分4种情况讨论。平衡二叉树是一棵动态的树表,可以动态的增加和删除节点。同时这里进行一些处理,为将图简化,我考虑这些相同高度的子树剪掉,这样就形成下面的图像。但是原创 2012-09-18 09:44:00 · 839 阅读 · 0 评论 -
KMP算法
看算法过程总有个经历,每次都以为自己真正理解了,隔一段时间看,发现自己并没有理解地那么透彻。kmp算法是大二时学的,这次复习数据结构重新看了一下,用简单到复杂的思路,将这个算法过程贴下。下面以goodgoodstudy这个字符串为例。假设我要在一篇文章找"goodgoodstudy",首先最容易想到的模式匹配算法是:算法1:int foo( string foo , strin原创 2012-09-16 15:47:22 · 592 阅读 · 0 评论 -
二叉排序树-删除操作
二叉排序树的中序遍历的序列为一个有序序列。二叉排序树即要删除一个节点让要保持这个特性。请看下面例子(PS:本来是没有那个2的,因为最近对这个敏感,但后来发现不加上不行)。1到9。中序遍历为 1 2 3 4 5 6 7 8 9 有两种调整的方法:一 ﹑8接到6后面,2接到9上。二 ﹑6替代7 , 5接到4下。原创 2012-09-18 13:22:23 · 759 阅读 · 0 评论 -
二叉树的遍历
由于二叉树本身的递归定义性质,所以递归算法的二叉树算法容易实现,也很符合人类的思维。那么采用迭代的方式呢?这是一种模拟栈的方式,采用人工的方法来压栈出栈。严蔚敏的那本绿色书上就一个中序遍历的非递归算法。假设示例的二叉树:中序的非递归:递归栈分析:如上图,先一边搜索左子树一边将节点压栈,当遇到null时,则从栈中弹出一个节点,遍历这个节点,因为左子树已经访问了,故将该节点的右子树原创 2012-09-18 22:53:46 · 824 阅读 · 0 评论 -
蛇形数组
蛇形数组就是按如图的顺序依次赋值 这次参加笔试,有这个题的算法,当时想到了一种很简洁的算法。算法的思路就是,每赋值一次,用flag标识来判断下一次赋值的位置,flag标记按右,下,左,上四个方向交替进行直到全部赋值完。伪码表示如下:n = 1 , i = 0 , j = 0 , flag = RIGHT ;while ( TRUE ) { a[i原创 2012-09-28 13:21:01 · 3630 阅读 · 0 评论