
算法
文章平均质量分 78
human3000
none
展开
-
STL中红黑树研究
RB树首先是个二叉搜索树,除此之外还要满足以下4个条件:1.每个结点不是红色就是黑色(很好,很符合计算机的二进制精神)2.根节点为黑色(在一种RB树变种中根节点是红色)3.如果结点是红色,则其子子结点必须是黑的;4.任意结点至NULL(树尾端)的任何路径,所包含的黑色结点数目必须相同 根据规则4,新增的结点必为红(初始状态),但是这样可能就会违反规则3根据规则3,新增原创 2007-11-19 15:07:00 · 688 阅读 · 0 评论 -
链表环状检测问题
链表环状检测主要有三种方法: 1、追赶法;如 robinzsy。 2、外部记录法;如improgrammer。 3、内部记录法(打记号);如VivianSnow。 内部标记法和外部标记法其实是一个道理,不过就是辅助变量一个是在链表节点内,一个是借助辅助数组或者hash或者AVL,红黑树,把已经访问过的节点地址存起来,每次访问下一个时候做查询处理. 追赶法,原创 2008-04-14 22:08:00 · 661 阅读 · 0 评论 -
又搬来了点东西-算法大全
原帖http://yuanma.org/data/2006/0628/article_1006_1.htm一、数论算法 1.求两数的最大公约数 function gcd(a,b:integer):integer;begin if b=0 then gcd:=a else gcd:=gcd (b,a mod b);end ; 2.求两数的最小公倍数 function转载 2008-04-10 20:18:00 · 323 阅读 · 0 评论 -
BM,KMP算法介绍的一个网站--图文并茂,简单易懂
http://www.cs.utexas.edu/users/moore/welcome.html这是bm算法作者之一J Strother Moore的个人网站,其中<a onmouseover="window.status=Cool Ideas for which I Take Some Credit;return true;" onmouseout="window.status=原创 2008-04-10 20:22:00 · 792 阅读 · 0 评论 -
字符串匹配之BM算法
/* 使用Boyer-Moore-Horspool-Sunday 算法进行字符串匹配的系列函数算法提出:BOYER, R., and S. MOORE. 1977. "A Fast String Searching Algorithm." HORSPOOL, R. N. 1980. "Practical Fast Searching in Stri原创 2008-04-07 23:44:00 · 866 阅读 · 0 评论 -
字符串匹配查找之KMP
在C/C++语言编程过程中,一般的字符串搜索操作都是通过标准库的strstr()函数来完成的,这在通常的情况下,因为字符串的搜索操作不多,并不会产生效率问题。实际上,这个函数的时间复杂度不容乐观。如果要从长度为n的字符串中查找长度为m的子字符串,那么这个strstr()函数的最坏时间复杂度为O(n*m),可见,随着子字符串长度m的增大,strstr()函数的时间复杂度也相应地成倍增加,有没有更加高转载 2008-04-07 22:51:00 · 793 阅读 · 0 评论 -
两种常见的最大公约数算法
1、欧几里德算法 欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a转载 2008-04-07 13:13:00 · 416 阅读 · 0 评论 -
位运算应用口诀 --及其强大,很多以前没想到的东西
位运算应用口诀 清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。位运算符的转载 2008-04-06 22:57:00 · 371 阅读 · 0 评论 -
C程序设计常用算法源代码
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终转载 2008-04-06 16:26:00 · 397 阅读 · 0 评论 -
linux kernel 学习手记1 Time, Delays, and Deferred Work
Chapter 7. Time, Delays, and Deferred Work时间、延迟及延缓操作1. 时钟中断是由系统定时硬件产生的,HZ在linux/param.h中定义。2. jiffies的使用jiffies 是一个unsigned long 变数要么和jiffies_64相同要么和他的低32位相同,我们一般使用的是jiffieslinux/原创 2007-12-08 13:30:00 · 1767 阅读 · 0 评论 -
BM
首先,先简单说明一下有关BM算法的一些基本概念。 BM算法是一种精确字符串匹配算法(区别于模糊匹配)。 BM算法采用从右向左比较 的方法,同时应用到了两种启发式规则,即坏字符规则 和好后缀规则 ,来决定向右跳跃的距离。 BM算法的基本流程: 设文本串T,模式串为P。首先将T与P进行左对齐,然后进行从右向左比较 ,如下图所示:转载 2009-11-10 00:13:00 · 243 阅读 · 0 评论