优先队列支持的操作:
插入元素和删除最大元素
public class MaxPQByArr { //保存数值 private int[] arr; //最大元素所在数组的位置索引,N从1开始 private int N; private int len; public MaxPQByArr(int max) { arr = new int[max]; N = 0; len = arr.length - 1; } /** * 降序排列,最大元素在arr[1] * 从后向前遍历数组,在合适位置插入元素 * @param val */ public void insert(int val) { if(N == 0) { arr[++N] = val; return; } if(arr[N] >= val) { if((N+1) <= len) { arr[++N] = val; return; } else { System.out.println("Out of array index!"); } } int index = N; while(index > 0) { if(arr[index] < val) { if((index + 1) > len) { System.out.println("Out of array index!"); return; } arr[index+1] = arr[index]; index--; } else { arr[index] = val; } } arr[index+1] = val; N++; } public int delMax() { int max = arr[1]; int index = 1; while(index < N) { arr[index] = arr[index+1]; index++; } N--; return max; } public boolean isEmpty() { return N == 0 ? true : false; } public boolean less(int i, int j) { if(arr[i] < arr[j]) return true; return false; } public void showContent() { for(int i = 1; i <= N; i++) { System.out.print(arr[i] + " "); } System.out.println(); } public static void main(String[] args) { MaxPQByArr pq = new MaxPQByArr(10); pq.insert(1); pq.insert(2); pq.showContent(); pq.insert(3); pq.insert(4); pq.insert(5); pq.showContent(); pq.insert(6); pq.insert(7); pq.insert(8); pq.insert(9); pq.showContent(); pq.insert(10); System.out.println(pq.delMax()); pq.showContent(); } }