算法
donnyxia1128
学无止境;
展开
-
算法问题:什么是P问题、NP问题和NPC问题
这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC转载 2012-02-06 22:27:46 · 2062 阅读 · 0 评论 -
比memcpy更快的内存拷贝
比memcpy更快的内存拷贝2009-07-09 22:14偶然间看到一个叫xmemcpy的工具,用做内存拷贝。号称在拷贝120字节以内时,比glibc提供的memcpy快10倍,并且有实验数据。这让人感觉很诧异。一直以来都觉得memcpy是很高效的。相比于strcpy等函数的逐字节拷贝,memcpy是按照机器字长逐字进行拷贝的,一个字等于4(32位机)或8(64位转载 2012-01-15 13:03:41 · 12571 阅读 · 0 评论 -
RLE压缩及优化--图片压缩
RLE压缩及优化--图片压缩分类: 开发经验以及优化 2005-03-23 17:55 535人阅读 评论(0)收藏 举报 简单的说RLE压缩就是将一串连续的相同数据转化为特定的格式达到压缩的目的。下面都对byte流压缩。如输入数据LPBTE pByte={1,1,1,1,1,1};压缩的数据为6,1压缩了4个字符。但是在数据流里面不转载 2012-01-09 11:49:44 · 2027 阅读 · 0 评论 -
Protocol Buffers:Google 的数据交换格式
[译文]Protocol Buffers:Google 的数据交换格式Jul 09北极程序设计Open Source,Protocol Buffers2 Comments×原文地址:Protocol Buffers: Google’s Da转载 2011-07-12 22:47:51 · 873 阅读 · 0 评论 -
如何设置文件的大小
一种方法是使用fseek到你想要的大小,然后随便写上一个什么字节。代码如下: FILE *fp = fopen("test1.txt","w"); nRetCode = fseek(fp, 1000, SEEK_END); nRetCode = fwrite("h原创 2007-02-12 15:43:00 · 2332 阅读 · 0 评论 -
善用表驱动法
最近碰到个需求,计算游戏得分的规则,类似这样:游戏人数第一名获得赌注第二名获得赌注第三名获得赌注第四名获得赌注二人100%0%——转载 2011-07-13 20:57:42 · 631 阅读 · 0 评论 -
表驱动分为三种,分别是:直接索引、索引表、阶梯索引
表驱动分为三种,分别是:直接索引、索引表、阶梯索引。一般直接索引使用比较广泛,也容易想到。今天在网上看到了一笔试题,统计一个字符串中第一次出现且频率最高的字符。看到这道题以后,我觉得使用表驱动能很快、很容易地解决问题,下面是我使用表驱动给出的解法。Java代码原创 2011-07-13 20:50:07 · 1628 阅读 · 0 评论 -
用表驱动代替switch-case
不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的代码(结构)设计,比如过多的switch-原创 2011-07-13 20:43:00 · 996 阅读 · 0 评论 -
KMP算法与一个经典概率问题
KMP算法与一个经典概率问题Program Impossible | 2007-11-28 17:41|18 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.com 转载:http://www.matrix67.c转载 2011-10-04 22:01:50 · 703 阅读 · 0 评论 -
KMP算法小结
KMP算法小结Posted on2011/06/14 by huangchao主要看了这里,感觉讲的十分的不错,总结一下。首先声明要搜索的串为S,设长度为n,要匹配的串为M,设长度为m.先考虑暴力的算法,暴力的算法是遍历S的每一个字符,然后从这转载 2011-10-04 21:48:23 · 707 阅读 · 0 评论 -
KMP算法
最近在学字符串匹配的时候接触了这个算法,算法书上都是我讨厌的下标,转来转去,头晕啊。只好上网搜一下,大部分跟书上一样,好不容易找到一篇,总算看得有些懂了。其实最简单的字符串匹配,就是逐个逐个比较,但是这样的效率很低,而KMP算法利用了......(不说了,表达能力差啊,^_^转载 2011-10-04 17:35:51 · 668 阅读 · 0 评论 -
平摊分析
对于一个操作的序列来讲,平摊分析(Amortize Analysis)得出的是在特定问题中这个序列下每个操作的平摊开销。 一个操作序列中,可能存在一、两个开销比较大的操作,在一般地分析下,如果割裂了各个操作的相关性或忽视问题的具体条件,那么操作序列的开销分析结果就可能会不够转载 2011-10-04 17:22:48 · 3027 阅读 · 0 评论 -
Hash表与素数
最近看到mysql的hash表,发现一个特点。当hash表满的时候,hash表size总是扩展成一个素数。上网查了一下资料,素数可以有效的减少hash冲突。想了一下,这个确实是有道理的。假设hash表大小为size,这是一个合数,即有size=a*n。当有hash原创 2010-08-03 14:51:00 · 4099 阅读 · 2 评论 -
LRU和LFU的区别
LRU和LFU是不同的!LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!比如,第二转载 2011-10-12 17:20:20 · 96948 阅读 · 16 评论 -
几种hash算法
链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无法比拟的,Hash链表的构造和冲突的不同实现方法对效率当然有一定的影响,然 而Hash函转载 2011-09-30 17:24:16 · 904 阅读 · 0 评论 -
巧夺天工的kfifo
巧夺天工的kfifo 分类: C/C++/linux 2010-07-25 12:03 1857人阅读 评论(2)收藏 举报 Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基转载 2012-02-17 18:35:12 · 1040 阅读 · 0 评论