
算法
文章平均质量分 96
buyulian
这个作者很懒,什么都没留下…
展开
-
100层楼2个鸡蛋求最低破碎楼层与信息论
100层楼2个鸡蛋求最低破碎楼层经典算法可以参考http://blog.sina.com.cn/s/blog_6c813dbd0101bh98.html这篇文档我们从更高的视角-信息论的角度去看这个问题对于 100 层楼,假设1楼不会碎,100层楼中必定有一层会碎,那么则共有 99 种可能。对于两个鸡蛋,假设共有 m 个动作,这个 m 个动作里面,可能有0、 1 或 2 个动作鸡蛋会碎。那么 m 个动作,便有 1 + m + m(m-1)/2 种可能。也就说 当1 + m + m(m-1...原创 2020-08-05 21:29:46 · 412 阅读 · 7 评论 -
二叉树无递归无额外空间遍历
在网上看了几个二叉树无递归无额外空间遍历的算法,感觉讲的太晦涩难懂,而递归遍历理解却非常容易,于是想着如果能和递归遍历一一对应起来,那么理解二叉树无递归无额外空间遍历的算法则容易许多了,而且理解会更加深入。废话不多说,直接看代码和注释,一共没几行代码。public class BinTree { public void preSubNode(Node node) { ...原创 2020-03-09 12:28:45 · 663 阅读 · 0 评论 -
博弈问题-SG函数
SG 函数给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负。事实上,这个游戏可以认为是所有ImpartialCombinatorial Games的抽象模型。其实,我们只要记住这个抽象的数学模型就好了,那些实际问题都可以转化为这个模型。也就是说,任何一个ICG都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来原创 2017-10-15 18:21:14 · 270 阅读 · 0 评论 -
常用排序算法总结(一)
转载于: http://www.cnblogs.com/eniac12/p/5329396.html转载 2018-01-31 14:58:21 · 128 阅读 · 0 评论 -
写了一个最简单的 js 模板引擎,直接贴代码
test {{ for(var i in data.users){ var user=data.users[i]; }} {{r+=user.user;}} {{ } }} var data={users:[{user:'wym'},{user:'xjm'}]}; var tp原创 2017-12-20 21:03:59 · 594 阅读 · 0 评论 -
数据库索引为什么要用 B+ 树而不用红黑树呢?
AVL 树和红黑树这些二叉树结构的数据结构可以达到最高的查询效率这是毋庸置疑的。既然如此,那么数据库索引为什么不用 AVL 树或者红黑树呢?这就牵扯到一个问题了,不考虑每种数据结构的前提条件而选择数据结构都是在耍流氓。AVL 数和红黑树基本都是存储在内存中才会使用的数据结构,那磁盘中会有什么不同呢?这就要牵扯到磁盘的存储原理了操作系统读写磁盘的基本单位是扇区,而文件系统的基本单原创 2017-09-15 22:06:09 · 17219 阅读 · 15 评论 -
AVL 树和红黑树,该用哪一个?
插入操作 AVL 树效率低于红黑树查询操作 AVL 树效率高于红黑树该用哪个取决于插入多还是查询多一般情况,红黑树平均效率更好一些原创 2017-09-03 21:44:10 · 450 阅读 · 0 评论 -
红黑树插入算法调整的一些原则
红黑树的定义红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)性质5. 从任一节点到其每个叶子的所有简单路原创 2017-09-03 21:40:11 · 979 阅读 · 0 评论 -
AVL 树插入算法记忆技巧总结
AVL 树在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL 树插入操作导致失衡左旋和右旋只记右旋,左旋找个对称来。 只要将最中间子数的父亲有 1 换为 0 ,然后 把 1 作为新的根节点就好了。右旋箭原创 2017-09-03 21:20:09 · 600 阅读 · 0 评论