在搜索引擎输入框中输入搜索词时,会实时得到搜索建议:
这些建议词是从搜索引擎的搜索记录中按照一定算法挖掘出的高关联度短语。如果没有搜索记录,能不能实现相关搜索建议呢?本文介绍一个简单的处理方法,下面将分别说明如何得到相关建议词和前端的实现方式。
1.相关词语的获取
最直观[......]
Archive for the '02.技术' Category
最近一直参与开发一个实验室项目,接触到了ExtJs。下面是工程中几个小问题的总结。
1.TreeGrid的叶子节点拖拽问题
我使用的是ExtJs3.1版本。ExtJs中默认在树(Ext.tree.TreePanel)的拖动中,一个节点是不能拖动到一个叶子节点中的。这样的设计有些武断,因为[......]
常用的排序算法包括:
下面按照稳定性、复杂度、适用特点进行总结。
稳定性:具有相同值的元素在输出数组中的相对次序没有改变。当卫星数据随被排序的元素一起移动时,稳定性比较重要。
复杂度:时间复杂度和空间复杂度。
适用特点:算法需要根据具体条件进行选择。
1.排序算法分类,稳定性和时空复杂度[1]:

2.适用特点[1-4]:[......]
在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。
一个中位数是它所在集合的"中点元素"。当n为奇数,中位数出现在i=(n+1)/2处;当n为偶数,存在两个中位数,i=n/2和i=n/2+1。如果不考虑奇偶性,中位数出现在
处(下[......]
桶排序(bucket sort)假设输入均匀而独立的分布在区间[0,1)上,在满足假设时,可以以线性时间运行。
基本思想:把区间划分成n个相同大小的子区间,或称桶。然后将n个输入数分布到各个桶中,由于输入数在区间上均匀分布,一般不会出现一个桶中出现太多数的情况。然后对各个桶进行分别排序,最后将[......]
计数排序假设n个输入元素中的每一个都是介于0到k之间的整数,此处k为某个整数。当
时,计数排序的运行时间为
。
计数排序的基本思想:对每一个输入元素x,确定出小于x的元素个数。根据这一信息把x直接放到最终输出数组的位置上。
假定输入是数组A[0.[......]


快速排序是一种排序算法,对包含n个数的输入数组,最坏情况运行时间为O(n^2),平均运行时间为O(nlgn),可以进行就地排序。快速排序通常是用于排序的最佳的使用选择。
和合并排序一样,快速排序也是基于分治模式,对一个典型子数组A[p..r]排序的分治过程包含三个步骤:
分解:将数组A[p..r]分成两个(可能空)的子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的每个元素都小于等于A[q],而且小于等于A[q+1..r]中的元素。下标q在这个过程中计算。
解决:递归调用快速排序,对子数组A[p..q-1]和A[q+1..r]排序。
合并:整个数组A[p..r]已经排序。
数组划分PARTITION
快速排序算法的关键是数组划分过程PARTITION,它对子数组A[p..r]进行就地重排:
[......]
优先级队列(priority queue)是堆的一个常见应用。有两种队列:最大优先级队列和最小优先级队列。
优先级队列是一种用来维护由一组元素构成的集合S的数据结构,这一组元素中的每一个都有一个关键字key。
一个最大优先级队列 支持以下操作:
INSERT(S,x):把元素插入集合S;
MAXIMUM(S):返回S中具有最大关键字的元素;
EXTRACT-MAX(S):去掉并返回S中具有的最大关键字的元素;
INCREASE-KEY(S,x,k):将元素x的关键字的值增加到k,这里k值不能小于x的原关键字的值。
最大优先级队列的一个应用:分式计算机上进行作业调度。
最小优先级队列支持的操作包括:INSERT,MINIMUM,EXTRACT-MIN和DECREASE-KEY。
最小优先级队列的一个应用:用在基于事件驱动的模拟器中。
下面是最大优先级队列的具体操作:
[......]