Lucene中的优先PriorityQueue排序实现
来源:互联网 发布:淘宝直播怎么开通不了 编辑:程序博客网 时间:2024/06/18 13:20
这个队列的作用是维护一个固定长度的队列,队列中存放的值为最高评分的一组实体类,好比期末考试的全年级学生成绩单,这个成绩单只有前一百名的学生成绩。
lucene中的优先队列的具体实现:
先初始化创建一个固定长度n的数组heap[n](heap[0]不插入实体,一直未null,方便计数),在插入需要排序的实体到heap数组过程中有两个步骤,
1、在未插满数组的时候,upHeap()方法始终保证heap[1]为排序规则最小的那一个,直至填满heap数组。
2、在这个数据被填满后,如果需要继续插入实体,新插入的数据通过与heap[1]比较大小,比heap[1]小的丢弃,比heap[1]大的实体,则通过downHeap()方法去插入heap中。
成员变量
private int size; private int maxSize; protected Object[] heap;
实现排序的两个重要方法
private final void upHeap() { int i = size; Object node = heap[i]; // save bottom node int j = i >>> 1; while (j > 0 && lessThan(node, heap[j])) { heap[i] = heap[j]; // shift parents down i = j; j = j >>> 1; } heap[i] = node; // install saved node }
private final void downHeap() { int i = 1; Object node = heap[i]; // save top node int j = i << 1; // find smaller child int k = j + 1; if (k <= size && lessThan(heap[k], heap[j])) { j = k; } while (j <= size && lessThan(heap[j], node)) { heap[i] = heap[j]; // shift up child i = j; j = i << 1; k = j + 1; if (k <= size && lessThan(heap[k], heap[j])) { j = k; } } heap[i] = node; // install saved node }
0 0
- Lucene中的优先PriorityQueue排序实现
- lucene PriorityQueue 优先队列
- lucene实现的top k优先队列PriorityQueue简单原理
- PriorityQueue优先队列实现原理
- PriorityQueue 优先队列的实现
- Java PriorityQueue实现类lucene段合并
- 利用优先队列PriorityQueue实现Prim算法
- JAVA PriorityQueue实现定制排序
- Lucene 中的 自定义排序的实现
- Java中的堆排序 (PriorityQueue )
- 优先队列 PriorityQueue (用堆实现的)
- 基于优先队列PriorityQueue的Dijstra算法之Java实现
- 堆结构的优秀实现类----PriorityQueue优先队列
- Queue集合中的PriorityQueue实现类
- java PriorityQueue优先队列
- java优先队列 PriorityQueue
- 【Java】优先队列PriorityQueue
- PriorityQueue 优先队列
- KLite 基本API介绍
- GPUImage遇到的坑
- 隐马尔可夫模型(HMM)攻略
- wordpress发布文章404
- IBM Rational Software Architect(RSA) 添加或删除功能部件
- Lucene中的优先PriorityQueue排序实现
- Genymotion添加devices时出现Connection timeout occurred的解决办法
- java.net.MalformedURLException: no protocol解决方法
- SGI STL (3) :: Thread Safe
- Java网络编程-序章(网络基础)
- 判断随机数是否为质数
- 写STM8flash和写外部flash EN25Q16A-104HIP 的函数小纪
- JAVA Object类的方法
- AAA分布式服务框架 Zookeeper -- 管理分布式环境中的数据