Category Archives: C && C++

多路归并算法(K-Way Merge Algorithm)

多路归并是外部排序(External Sort)的基础,实现也比较简单,和最简单的归并排序中的二路归并是基本一样的,只不过路数是浮动的k。

(1)假设有K路数据流,流内部是有序的,且流间同为升序或降序

(2)首先读取每个流的第一个数,如果已经EOF,pass

(3)将有效的k(k可能小于K)个数比较,选出最小的那路mink,输出,读取mink的下一个

(4)直到所有K路都EOF

代码如下:
/*
* main.c
*
* Created on: 20[......]

继续阅读

算法技术手册 – 查找 – 散列查找(Hash查找)

对于含有n个元素的集合C,我们先构造一个Hash函数,让n映射到b个桶内,当选择合理时,速度会很快,时间复杂度O(1)。

完美哈希函数:不会产生冲突,是存在的。

对于>=1个值映射到同一个桶的情况下,就会发生碰撞。处理方法:

  • 链表:每个桶拉一个链表,第一遍散列后,在链表中查找是否存在元素。
  • 开放定址:构造双变量散列函数h(u, j)。h(u, 0) = h(u),此时退化为原始散列函数。

开放定址,分两类:

试用开源分词系统SCWS

在前一段时间,使用了贵所的ICTCLAS分词系统,总体下来有两点不太满意:

1、分词速度奇慢,分词速度勉强能达到600KB/s

2、词库拓展麻烦,不加词库则分词效果欠佳。

3、无可用的授权

其实ICTCLAS本身,在贵所内部就存在诸多争议,譬如版权之争……具体细节不方便描述了。

国内有很多人,特别是学术界很推崇ICTCLAS,大家都觉得隐马是高级算法,效果自然会很好,譬如这篇很偏激的争论帖子:

http://www.oschina.net/question/9[......]

继续阅读