Priority queue
public class PriorityQ { // array in sorted order, from max at 0 to min at size-1 private int maxSize; private long[] queArray; private int nItems; public PriorityQ(int s) { maxSize = s; queArray = new long[maxSize]; nItems = 0; } public void insert(long item) { int i; if (nItems == 0) queArray[nItems++] = item; // insert at 0 else { for (i = nItems - 1; i >= 0; i--) // start at end, { if (item > queArray[i]) // if new item larger, queArray[i + 1] = queArray[i]; // shift upward else // if smaller, break; // done shifting } queArray[i + 1] = item; // insert it nItems++; } // end else (nItems > 0) } public long remove(){ return queArray[--nItems]; } public long peekMin(){ return queArray[nItems - 1]; } public boolean isEmpty(){ return (nItems == 0); } public boolean isFull(){ return (nItems == maxSize); } public static void main(String[] args) { PriorityQ thePQ = new PriorityQ(5); thePQ.insert(30); thePQ.insert(50); thePQ.insert(10); thePQ.insert(40); thePQ.insert(20); while (!thePQ.isEmpty()) { long item = thePQ.remove(); System.out.print(item + " "); // 10, 20, 30, 40, 50 } System.out.println(""); } }