
算法
itegel84
这个作者很懒,什么都没留下…
展开
-
memcpy和memmove
<br />下面是一个memcpy的结构体的复制,有点类似于C++中调用类的拷贝构造函数,用一个对象去初始化另一个对象!<br />例:<br />#include "stdio.h"<br />#include "string.h"<br />void main(void)<br />{<br />struct student<br />{<br /> char *name;<br /> int age;<br />}stu1={"wangqiao",24};<br />struct stud转载 2010-07-05 09:11:00 · 742 阅读 · 0 评论 -
抽屉原理与Simhash
抽屉原理:把多余N个物体反倒N个抽屉, 至少有一个抽屉里的物体数不少于两件。simhash:如果两个输入(文档)越相似,其哈希值越相近。具体哈希算法,可以百度一下,也比较简单。那么抽屉原理和simhash有什么关系呢?他俩一般组合起来用,通常用于文档判重上。最著名的当然是google用于网页判重上。定义两个文档相似为两个文档simhash值海明距离(二进制数不同的位数)小与原创 2012-08-03 14:16:12 · 2478 阅读 · 0 评论 -
找出数组中第k个元素
好久没写代码了,练练手。从其他地方看的,其实思想跟快排一样,不过只是找第K个元素,所以不用全部都排序。复杂度号称是O(N),不过算上交换,我觉得实际上是比O(要大的)。交换代价应该比比较要大。#include using namespace std;int count_cmp = 0;int count_swp = 0;void swap(int &a,int &b){ i原创 2012-01-31 14:56:19 · 1136 阅读 · 0 评论 -
copy on writre
(可以参考php变量类型定义) 我们应该知道在string类中,要实现写时才拷贝,需要解决两个问题,一个是内存共享,一个是Copy-On-Wirte,这两个主题会让我们产生许多疑问,还是让我们带着这样几个问题来学习吧:1、 Copy-On-Write的原理是什么转载 2011-08-01 14:46:10 · 795 阅读 · 0 评论 -
simhash算法的原理
<br />第一次听说google的simhash算法[1]时,我感到很神奇。传统的hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法。传统hash算法产生的两个签名,如果相等,说明原始内容在一定概率下是相等的;如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节,所产生的签名也很可能差别极大。从这个意义上来说,要设计一个hash算法,对相似的内容产生的签名也相近,是更为艰难的任务,因为它的签名值除了提供原始内容是否相等的信息外,还能额转载 2011-03-17 10:53:00 · 657 阅读 · 0 评论 -
AC自动机
<br />关键字:AC自动机自动机有限状态自动机 Trie 字母树字符串匹配多串匹配算法<br />Note:阅读本文需要有KMP算法基础,如果你不知道什么是KMP,请看这里:<br />http://www.matrix67.com/blog/article.asp?id=146 (Matrix67大牛写的)<br /> <br />AC自动机是用来处理多串匹配问题的,即给你很多串,再给你一篇文章,让你在文章中找这些串是否出现过,在哪出现。也许你考虑过AC自动机名字的含义,我也有过同样的想法。你现在转载 2011-02-28 11:58:00 · 635 阅读 · 0 评论 -
CppUnit用例访问被测类私有&保护成员的解决方案
<br />1. 方案意义 <br />以前测试类访问被测类的私有、保护成员的方法是在被测类中声明测试类为它的友元类,这种方法有一个很不好的缺陷:需要修改正式代码。<br />本方案便是解决此问题的。此方案的思想是包向信原创,之后又与陈国栋讨论,解决了private成员访问问题、使用链接库时的静态成员链接问题,最后再整理出来的易于操作的实施办法。<br />注:如果您对访问权限不关心,可以直接参见“其它方案”中提供的更加简单、有效的解决方案。<br />2. 方案简述 <br />1) 从被测类(CBeTe转载 2010-11-25 14:11:00 · 882 阅读 · 0 评论 -
后缀数组
<br />转自:<br />后缀数组(Suffix Array)——理论和思想<br /> 这一篇和下一篇博文我准备写一下我在参加ACM/ICPC期间曾经研究过的后缀数组。关于后缀数组,网上有很多英文资料,但是很多现在的研究结果都是受1991年Udi Manber & Gene Myers的《Suffix arrays: a new method for on-line string searches》中所提的方法的启发,采用倍增的思想。当然,现在有国外学者提到的三分+分治的线性构造方法除外。<br /转载 2010-11-18 19:53:00 · 6923 阅读 · 2 评论 -
字符串检索
<br />前缀匹配:trie树<br />匹配:后缀树,后缀树组原创 2010-11-16 11:16:00 · 777 阅读 · 0 评论 -
并查集
l 并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。l 并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(也可以根据情况而变)。2、Find_Set(x) 查找转载 2010-09-29 20:06:00 · 568 阅读 · 0 评论 -
pthread_join函数及linux线程
<br />pthread_join使一个线程等待另一个线程结束。 代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。 所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。 下面说一下如何创建一个线程。 通过创建线程,线程将会执行一个线程函数,该线程格式必转载 2010-08-13 15:23:00 · 592 阅读 · 0 评论 -
fastbit 基于bitmap的索引,看着很牛X的样子,先记录
https://sdm.lbl.gov/fastbit/stBit is an open-source data processing library following the spirit of NoSQL movement. It offers a set of searching functions supported by compressed bitmap inde转载 2014-09-01 10:05:05 · 2039 阅读 · 0 评论