首页 > 代码库 > 第一篇博客——基于数组的优先队列(java版)

第一篇博客——基于数组的优先队列(java版)

      看过园子里和CSND上那么多大牛精彩的博客后,早就按捺不住想亲手写上几篇。奈何每次坐在电脑前准备敲字的时候,立马赶到浑身不自在,无从下手。实在是因为自高考之后,大学以来,本人几乎就再没动笔写过一篇文字,写作水平退化实在严重。今天鼓起勇气开始写作博客,一方面希望通过多写慢慢地找回写作的感觉,一方面也希望通过博客和大家多多交流,共同进步。

      既然是第一次试手,就写个简单易懂的内容——优先队列。

  话不多说,先上代码。

 1 /** 2  * @author Mr Left 3  * @version 1.0 4  */ 5 public class PriorityQueue { 6     private int[] elems; 7     private int max;//队列最大容量 8     private int size;//队列当前容量 9     10     public PriorityQueue(int s) {11         this.max = s;12         elems = new int[max];13         size = 0;14     }15     16     public void enqueue(int ele) {17         if(size == 0) 18             elems[size++] = ele;19         else {20             int i = size-1;21             while(i>=0 &&  ele<elems[i]) {22                 elems[i+1] = elems[i];23                 i--;24             }25             elems[i+1] = ele;26             size++;27         }28         29     }30     31     public int dequeue() {32         return elems[--size];33     }34     35     public int peek() {36         return elems[size-1];37     }38     39     public boolean isEmpty() {40         if(size == 0)41             return true;42         else 43             return false;44     }45     public boolean isFull() {46         if(size == max)47             return true;48         else 49             return false;50     }51     52     53     public static void  main(String[] args) {54         PriorityQueue priorityQueue = new PriorityQueue(10);55         priorityQueue.enqueue(1);56         priorityQueue.enqueue(3);57         priorityQueue.enqueue(2);58         priorityQueue.enqueue(9);59         priorityQueue.enqueue(4);60         priorityQueue.enqueue(5);61         priorityQueue.enqueue(3);62         priorityQueue.enqueue(2);63         priorityQueue.enqueue(3);64         priorityQueue.enqueue(2);65         66         System.out.println(priorityQueue.dequeue());67         System.out.println(priorityQueue.dequeue());68         System.out.println(priorityQueue.dequeue());69         System.out.println(priorityQueue.dequeue());70         System.out.println(priorityQueue.dequeue());71         System.out.println(priorityQueue.dequeue());72         System.out.println(priorityQueue.dequeue());73         System.out.println(priorityQueue.dequeue());74         System.out.println(priorityQueue.dequeue());75         System.out.println(priorityQueue.dequeue());76     }77 }

  当然,这代码有很多不足之处,比如每次插入时要判断是否已满,弹出时要判断是否为空,这我都省略未写,大概意思表达清楚就行了。

  好了,今天就写这么点,争取以后每天都有新博文。