算法与数据结构
文章平均质量分 56
JJ8582
互联网领域小工一枚感兴趣于搜索引擎相关性NLP等
展开
-
数据结构之败者树
败者树原理 2个子结点比较后的败者放入它们的父结点,而胜者送到它们父结点的父节点去再作比较,这才是败者树。ls[0]放的是最终的胜者。堆: 当n较大的时候采用什么算法呢?首先我们分析上面的算法,当从N中取出一个新的数m的时候,它需要依次和max1,max2,max3……maxn比较,一直找到一个比m小的maxx,用m来替换max x,平均比较次数是n/2。可不可转载 2011-10-21 14:07:20 · 5207 阅读 · 2 评论 -
typename的两个含义
问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? template class Widget; // uses "class"template class Widget; // uses "typename" 答案:没什么不同。在声明一个 template type paramet转载 2011-11-02 15:14:08 · 654 阅读 · 0 评论 -
2维有序数组中查找一个数K的问题
问题描述: 在一个2维有序数组(N*N)中查找一个值为K。 其数组的描述如下图: 其中:行递增序列,列也是递增序列。 解决方案:1:刚开始想到了败者树来查找,发现有点大才小用。并且时间效率也不是很高,败者树主要是来做多路归并或是未排序的数组的一个查找过程。这样的时间复杂度也得O(N*logN);原创 2011-11-04 17:18:51 · 856 阅读 · 0 评论 -
Lucene的算法原理
Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下: 注意到关键字是按字符顺序排列的(lucene没有使用B树结构),因此lucene可以用二元搜索算法快速定位关键词。 实现时 lucene将上面三列分别作为词典文件(Term Dictionary)、频率文件(frequencies)、位置文件 (positions)保存。其中词转载 2011-11-27 21:11:20 · 1334 阅读 · 1 评论 -
思想行动之Tips提示框引擎的索引结构
摘要 对于一个轻量级的引擎来说,索引结构直接决定了其性能的好坏,最近的工作中一直接触到本地搜索,参考一些关于Lucene的思想。本文将陈述几种提示框引擎的索引结构,(下面的都用Tips来取代提示框引擎)只为抛砖引玉,未经验证。欢迎大家拍砖!鉴于Tips返回结果的特殊性:一般只需返回十个结果、因为每敲入一个字即是对引擎的一次请求、用户对引擎的请求十分频繁,对性能要求十分的高。因此原创 2011-12-16 16:55:44 · 1531 阅读 · 0 评论 -
多路归并问题详解
工作的时候遇到一个倒排序列的归并问题。当然:每个序列都是有序的,这里我们令有序为从小到大排序。思考时,其主要有几点归并要求:1、归并求不同路的交集的时候交集个数越大越好。2、只有当结果数不满足排序需求的时候才去求归并的并集。3、在每一路中可能存在相同的元素。 代码中在归并的时候使用了 败者树 这一思想来实现。具体:(假设归并的路数为N,每一路的元素个数为M)1、建立原创 2011-10-20 18:12:58 · 4177 阅读 · 1 评论 -
计算几何算法列表
一、引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解转载 2011-12-30 14:25:22 · 932 阅读 · 0 评论