码迷,mamicode.com
首页 >  
搜索关键字:伸展树 splay 数据结构    ( 38497个结果
python数据结构与算法 33 希尔排序
希尔排序 希尔排序,有时称为递减增量排序,是在插入排序基础上,把列表拆成几个较小的子表,然后对每个子表使用插入排序的方法。选出子表的方法是希尔排序的关键,它并不是把列表的中相近的元素取出来组成子表,而是使用了一个增量值I,有时也叫做“间隙”,然后每隔一个间隙选中一个元素来组成子表。 这可以从图6中看出来,列表中有9个元素,如果我们使用增量3,就有3个子表,每个子表单独做插入排序。完成之后的...
分类:编程语言   时间:2014-04-29 13:15:20    阅读次数:353
Reverse Linked List II -- LeetCode
原题链接: http://oj.leetcode.com/problems/reverse-linked-list-ii/  这道题是比较常见的链表反转操作,不过不是反转整个链表,而是从m到n的一部分。分为两个步骤,第一步是找到m结点所在位置,第二步就是进行反转直到n结点。反转的方法就是每读到一个结点,把它插入到m结点前面位置,然后m结点接到读到结点的下一个。总共只需要一次扫描,所以时间是O(n...
分类:其他好文   时间:2014-04-28 10:38:42    阅读次数:240
编程算法基础-3.1自顶向下风格
第三讲 风格与模式 3.1自顶向下风格 复杂问题分解,直到小问题足够简单,可以掌控为止 是一种思考方式 把大的任务不断的分解为更小的子任务   另一法宝:忽略,忽略细节   程序问题 制定框架---》逐步细化---》逐步精华---》分解为子问题 打印特定的形状 做一个二维数组的缓冲区 向缓冲区输出 缓冲区输出屏幕上 数组初始元素都是0   表格:横线,竖线。...
分类:其他好文   时间:2014-04-28 10:16:40    阅读次数:436
数据结构--栈的应用
了解了数据结构--栈(基础知识) 下面简单整理了下有关栈的几个应用。 递归 把一个直接调用自己,或间接调用自己的函数,成为递归函数。 这里有一个比较好的例子,看下面一组数: 你是否发现了这组数的规律呢,没错你会发现从第三个数开始,每个数都是前面两个数的之合。 现在我们通过程序来实现这个算法,如下java代码: public class Test { private ...
分类:其他好文   时间:2014-04-27 22:37:30    阅读次数:404
hdu-3487-Play with Chain (Splay tree)
伸展树模版真的好长好长。。。 cut a b c:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后把ch[ch[root][1][0]]拿掉,放在剩下的树的第c个节点下。 flip a b:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后翻转ch[ch[root][1][0]]; 由于会出现操作两边的情况,所以加了两个-1节点。 注意: 1,输出的时候要注...
分类:其他好文   时间:2014-04-27 22:31:19    阅读次数:295
Huffman编码与解码的实现
Huffman编码相信学过数据结构这么课的都知道,概念也比较好理解,但是一般好理解的算法,在实际实现的过程中总是会遇到各种问题,一方面个人认为是对算法的实现过程不熟,另一方面在实际实现的过程中可以提升自己实现算法的能力,将自己的想法实现后还是比较满足的。下面是本人亲自实现的Huffman编码与解码的C语言实现,主要是记录一下自己当时的想法,供以后备忘吧。 数据结构定义如下: typedef s...
分类:其他好文   时间:2014-04-27 21:41:06    阅读次数:313
算法基础(九):超详细最优二叉树构建(2)求编码
算法基础(八):超详细最优二叉树构建(2)求编码...
分类:其他好文   时间:2014-04-27 21:34:00    阅读次数:236
Linux 内核 hlist 详解
在Linux内核中,hlist(哈希链表)使用非常广泛。本文将对其数据结构和核心函数进行分析。 和hlist相关的数据结构有两个:hlist_head 和 hlist_node //hash桶的头结点 struct hlist_head { struct hlist_node *first;//指向每一个hash桶的第一个结点的指针 }; //hash桶的普通结点 struct hl...
分类:系统相关   时间:2014-04-27 21:24:06    阅读次数:579
hdu-3436-Queue-jumpers-伸展树
5KB的代码。。。250+行。。。就错在一个离散化上,郁闷了好久。。。 RANK就是找出第K位是多少 TOP是将某个人移至队首,对中间区间没有影响 QUERY是某个人的位置 则: TOP:将目标点旋转至根部,然后删除,最后插入到队首 RANK:通过size查找即可,注意每个点的size是区间长度 QUERY:把该点旋转至根部,左子树的大小+1便是结果 ...
分类:其他好文   时间:2014-04-27 21:23:00    阅读次数:330
二叉树——查找两个任意节点的最近祖先
很久没有用过二叉树了,最近由于需要用到了,发现很多知识需要巩固了,中间涉及到一个算法就是找任意两个节点的最近祖先。通过本人回顾和演算,最终提出了下面一个方法,网上也有很多其他的方式实现,再次仅对自己好几个小时的工作作个记录和积累吧! 程序是用C语言写的,个人觉得如果用C#实现会更加方便。 首先是数据结构定义: typedef char TElemType; typedef bool Statu...
分类:其他好文   时间:2014-04-27 21:14:06    阅读次数:366
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!