java 优先级队列

package work2;

/*
 * 优先级队列中,插入操作需要O(N)的时间,删除操作需要O(1)的时间
 */
public class PriorityQ {
    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 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;
                }
            }
            //System.out.println("j="+j);
            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 static void main(String[] args) {
        PriorityQ pr = new PriorityQ(5);
        pr.insert(30);
        pr.insert(50);
        pr.insert(10);
        pr.insert(40);
        pr.insert(20);
        
        while(!pr.isEmpty()) {
            long item = pr.remove();
            System.out.print(item+" ");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值