优先队列 算法导论 java语言
来源:互联网 发布:身体域纳米网络 编辑:程序博客网 时间:2024/05/22 13:08
<pre name="code" class="java">public class PriorityQueue {private int heapsize=0;public final static int MIN=-10000; private final static int CAPACITY = 16; private int[] quene = new int[CAPACITY]; public static void main(String[] args) {PriorityQueue q = new PriorityQueue();System.out.println("插入2 6 3 8 7 9 1 10 9!");q.insert(2); q.insert(6); q.insert(3); q.insert(8); q.insert(7); q.insert(9); q.insert(1); q.insert(10);q.insert(9); System.out.println("最大值:"+q.getMaximum());System.out.println("最大值:"+q.extractMax()+"取出"); System.out.println("最大值:"+q.extractMax()+"取出"); System.out.println("插入9 1 10!");q.insert(9); q.insert(1); q.insert(10); System.out.println("最大值:"+q.extractMax()+"取出"); System.out.println("最大值:"+q.extractMax()+"取出"); System.out.println("最大值:"+q.extractMax()+"取出"); System.out.println("最大值:"+q.extractMax()+"取出"); }public int getMaximum() {return quene[0];}public int extractMax() {if(heapsize < 1) {System.err.println("heap underflow!");}int max = quene[0];quene[0] = quene[heapsize-1];heapsize--;maxHeapify(0);return max;}public void insert(int key) {heapsize++;quene[heapsize-1] = MIN;increaseKey(heapsize-1,key);}private void increaseKey(int i,int key) {if(key < quene[i]) {System.err.println("new key is smaller than current key");}quene[i]=key;while(i>0 && quene[parent(i)]<quene[i]) {exchange(i,parent(i));i=parent(i);}}private void exchange(int i, int j) {int temp = quene[i];quene[i] = quene[j];quene[j] = temp;}private void maxHeapify( int i) {int largest=0;int l = Left(i);int r = Right(i);if(l < heapsize && quene[l] > quene[i]) {largest = l;} else {largest = i;}if(r < heapsize && quene[r] > quene[largest]) {largest = r;}if(largest != i) {exchange(i,largest);maxHeapify(largest);}}private int parent(int i) {return (i-1)/2;}private int Right(int i) {return (2*i+2);}private int Left(int i) {return (2*i+1);}}
运行结果为:
插入2 6 3 8 7 9 1 10 9!最大值:10最大值:10取出最大值:9取出插入9 1 10!最大值:10取出最大值:9取出最大值:9取出最大值:8取出
q.insert(1);
0 0
- 优先队列 算法导论 java语言
- 《算法导论》优先队列
- 算法导论-----最大优先队列
- 最大优先队列--【算法导论】
- 算法导论--优先队列实现
- 算法导论优先队列实现
- 算法导论 第六章优先队列总结
- [算法导论读书笔记]堆排序,优先队列
- 算法导论--------------优先队列的研究
- 算法导论学习笔记 6.5 优先队列
- 算法导论-堆排序+优先队列
- 《算法导论》堆排序和优先队列
- 算法导论:c++堆排序&优先队列
- 关于 优先队列(C语言) ——(参考算法导论)
- 算法导论-优先级队列-C语言
- 算法导论 第六章优先队列C++实现
- 算法导论第六章之——优先队列
- 算法导论16.3_Huffman编码+优先队列(堆实现)
- AFNetworking 浅析
- 代码整洁之道
- 有关于指针函数的问题
- RDLC后台自定义报表模板
- 监控 SQL Server 的运行状况
- 优先队列 算法导论 java语言
- VIM技巧之分隔窗口
- 抽象类和接口
- [Lua]在C函数中保存状态--注册表,环境表,upvalue
- SVN 树冲突和目录丢失问题
- 需求采集人人有责
- JAVA+ffmpeg+mencoder转换视频
- HTTP协议请求与响应格式内容详解
- Spring之思