java优先级队列

来源:互联网 发布:2016年nba西部决赛数据 编辑:程序博客网 时间:2024/06/05 19:06
public class PriorityQ {    private int maxSize;    private long[] queArray;    private int nItems;    public PriorityQ(int s){        maxSize = s;        queArray = new long[s];        nItems = 0;    }    public void insert(long item){        int j;        if(nItems == 0){            queArray[nItems++] = item;        }        else{            for(j=nItems-1;j>=0;j--){                if(item>queArray[j]){                    queArray[j+1] = queArray[j];                }else{                    break;                }            }            queArray[j+1]=item;            nItems++;        }    }    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 class PriorityApp {    public static void main(String[] args) {        PriorityQ pq = new PriorityQ(5);        pq.insert(20);        pq.insert(10);        pq.insert(30);        pq.insert(50);        pq.insert(40);        while(!pq.isEmpty()){            long item = pq.remove();            System.out.print(item+" ");        }        System.out.println("");    }}

插入操作需要O(N)时间,删除操作O(1)时间

0 0
原创粉丝点击