林州做网站/优化seo教程技术
优先队列支持的操作:
插入元素和删除最大元素
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();} }