Priority queue

publicclass PriorityQ { // array in sorted order, from max at 0 to min at size-1 privateint maxSize; privatelong[] queArray; privateint nItems; public PriorityQ(int s) { maxSize = s; queArray = newlong[maxSize]; nItems = 0; } publicvoid 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) } publiclong remove(){ return queArray[--nItems]; } publiclong peekMin(){ return queArray[nItems - 1]; } publicboolean isEmpty(){ return (nItems == 0); } publicboolean isFull(){ return (nItems == maxSize); } publicstaticvoid 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(""); } }
Related examples in the same category