算法
文章平均质量分 80
小雄哥
勿忘心安
展开
-
查找、检索 算法-总结3 平衡二叉查找树 [AVL]
<br /> <br />源地址: http://hxraid.javaeye.com/blog/609949<br /> <br />在上一个专题中,我们在谈论二叉查找树的效率的时候。不同结构的二叉查找树,查找效率有很大的不同(单支树结构的查找效率退化成了顺序查找)。如何解决这个问题呢?关键在于如何最大限度的减小树的深度。正是基于这个想法,平衡二叉树出现了。<br /> <br />平衡二叉树的定义 (AVL—— 发明者为Adel'son-Vel'skii 和 Landis)<br /> <br />平衡转载 2010-06-17 09:49:00 · 1387 阅读 · 0 评论 -
Redis、Memcached、Guava、Ehcache中的算法
缓存那些事,一是内存爆了要用LRU(最近最少使用)、LFU(最少访问次数)、FIFO的算法清理一些;二是设置了超时时间的键过期便要删除,用主动或惰性的方法。在看所有的细节之前,可以看一篇相当专业的《缓存算法》,世界真宽阔,算法真奇妙。1. LRU简单粗暴的Redis今天看Redis3.0的发行通告里说,LRU算法大幅提升了,就翻开源码来八卦一下,结果哭笑不得,这旧版的"近似L原创 2015-10-21 16:21:57 · 663 阅读 · 0 评论 -
杭电OJ(HDU)-ACMSteps-Chapter Three-《FatMouse' Trade》《今年暑假不AC》《排名》《开门人和关门人》
杭电OJ(HDU)-ACMSteps-Chapter Three-《FatMouse' Trade》《今年暑假不AC》《排名》《开门人和关门人》原创 2014-06-22 10:59:04 · 1723 阅读 · 0 评论 -
查找、检索 算法-总结2 二叉查找树 [BST]
<br />源地址:http://hxraid.javaeye.com/blog/609312<br /> <br /> <br />当所有的静态查找结构添加和删除一个数据的时候,整个结构都需要重建。这对于常常需要在查找过程中动态改变数据而言,是灾难性的。因此人们就必须去寻找高效的动态查找结构,我们在这讨论一个非常常用的动态查找树——二叉查找树 。<br /> <br />二叉查找树的特点<br /> <br />下面的图就是两棵二叉查找树,我们可以总结一下他的特点:<br />(1) 若它的左子树不空,则转载 2010-06-17 09:45:00 · 1352 阅读 · 1 评论 -
查找、检索 算法-总结6 动态查找树比较
<br /><br />我们这个专题介绍的动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。这四种树都具备下面几个优势:<br />(1) 都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有限的改变树的形态。而这些操作所付出的代价都远远小于重建一棵树。这一优势在《查找结构专题(1):静态查找结构概论 》中讲到过。<br />(2) 查找的时间复杂度大体维持在O(log(N))数量级上。可转载 2010-06-17 10:06:00 · 1530 阅读 · 0 评论 -
查找、检索 算法-总结1 静态查找结构概论
原帖地址:http://hxraid.javaeye.com/blog/608982在计算机许多应用领域中,查找操作都是十分重要的研究技术。查找效率的好坏直接影响应用软件的性能。比如说:(1) 全文检索技术中对文本建立索引之后,对索引的查找效率将决定搜索引擎的质量。(2) mysql数据库的索引就是B+树结构,查找效率极高。(3) Windows OS的文件系统结构也是采用B+树进行存储的。在《查原创 2010-06-17 09:32:00 · 1306 阅读 · 1 评论 -
查找、检索 算法-总结4 红黑树 [RBT]
源地址: http://hxraid.javaeye.com/blog/611816红黑树的性质与定义红黑树(red-black tree) 是一棵满足下述性质的二叉查找树:1. 每一个结点要么是红色,要么是黑色。2. 根结点是黑色的。3. 所有叶子结点都是黑色的(实际上都是Null指针,下图用NIL表示)。叶子结点不包含任何关键字信息,所有查询关键字都在非终结点上。4. 每个红色结点的两个子节点必须是黑色的。换句话说:从每个叶子到根的所有路径上不能有两个连续的红色结点5. 从任一结点到其每个叶子的所有路径转载 2010-06-17 09:59:00 · 1423 阅读 · 0 评论 -
没事做着玩,算法·!
1。写一个把字符串反转的函数,比如把"abcd"变成"dcba"2。写一个递归函数来判断数组a[N]是不是递增的3。a[1000]中存贮的0~1000,写一个函数,逢3就删,到头再从0开始,直到剩两个求最后一个被删的是谁。举例0~7这7个数0-1-2(d)-3-4-5(d)-6-7-0(d)-1-3-......4。写一个函数建立一个链表,有10个结点,每个结点有一个整数型数据。转载 2009-08-23 13:34:00 · 909 阅读 · 0 评论 -
杭电OJ(HDU)-ACM Steps-Chapter One-《A+B for Input-Output Practice》 1至8 全解
2.#include #include int main(){ int a,b,d=0; int n; scanf("%d",&n); int i = 0; for (;i<n;++i) { scanf("%d%d",&a,&b); d=a+b; printf("%d\n",d); } return 0;}3.原创 2014-06-03 20:15:24 · 1647 阅读 · 0 评论 -
杭电OJ(HDU)-ACMSteps-Chapter Two-《An Easy Task》《Buildings》《decimal system》《Vowel Counting》
http://acm.hdu.edu.cn/game/entry/problem/list.php?chapterid=1§ionid=21.2.5#include/*题意:找闰年。 if((i%4==0 && i%100!=0) || i%400==0)count++; 32005 251855 122004 100002108190443236*/int ma原创 2014-06-12 09:48:37 · 2441 阅读 · 0 评论 -
杭电OJ(HDU)-ACM Steps-Chapter Two-《Biker's Trip Odometer》《Climbing Worm》《hide handkerchief》《Nasty Hac》
杭电OJ(HDU)-ACM Steps-Chapter Two-《Biker's Trip Odometer》《Climbing Worm》《hide handkerchief》《Nasty Hac》原创 2014-06-04 20:21:25 · 1608 阅读 · 0 评论 -
查找、检索 算法-总结5 多路查找树/B~树/B+树
<br /> <br />源地址:http://hxraid.javaeye.com/blog/611105<br /> <br />在前面专题中讲的BST、AVL、RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关。那么降低树高自然对查找效率是有所帮助的。另外还有一个比较实际的问题:就是大量数据存储中,实现查询这样一个实际背景下,平衡二叉树由于树深度过大而造成磁盘IO读写过于频繁,进而导致效率低下。那么如何减少树的深度(当然不能减少查询数据量),一个基本的想法就是:<br />1. 每个节点存转载 2010-06-17 10:04:00 · 1455 阅读 · 0 评论 -
取石子算法,别名:威佐夫博奕,对应POJ:1067
#include "stdafx.h"#include #include int main(){ int x,y,k; while(scanf("%d%d",&x,&y)!=EOF) { if(x > y) { k = x; x = y;原创 2014-06-02 11:40:50 · 1407 阅读 · 0 评论 -
Collections.sort() 排序算法 源码简介
Collections.sort()和排序算法简介原创 2017-05-23 12:01:21 · 3473 阅读 · 0 评论