java数据结构与算法值优先级队列

本文详细介绍了优先级队列的概念,通过实例展示了如何在实际场景中使用优先级队列进行高效的数据处理。文章提供了优先级队列的实现代码,并通过测试验证了其正确性和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、优先级队列

  什么是优先级队列:优先级队列是一种比栈和队列更加常用的一种数据结构。在优先级队列中,数据项按照关键字的值有序。数据项插入到队列中时,会按照顺序插入到合适的位置,用来保证队列的顺序。

  生活中的例子,假设你有若干封件,你最急需要处理的文件就放在所有邮件的 顶部,如果不急需处理的文件就放放在下面。

  参考代码:

package edu.structure.queue;

public class PriorityQ {

    private int maxSize;
    private int[] queArray;
    private int nElmes;

    public PriorityQ(int maxSize) {
        this.maxSize = maxSize;
        queArray = new int[maxSize];
        nElmes = 0;
    }

    public void insert(int value) {
        if (nElmes == 0) {
            queArray[nElmes++] = value;
        } else {
            int i;
            for (i = nElmes - 1; i >= 0; i--) {
                if (value > queArray[i]) {
                    queArray[i + 1] = queArray[i];
                } else {
                    break;
                }
            }
            queArray[i + 1] = value;
            nElmes++;
        }

    }

    public int remove() {
        return queArray[--nElmes];
    }

    public boolean isFull() {
        return (nElmes == maxSize);
    }

    public boolean isEmpty() {
        return (nElmes == 0);
    }
}

  

二、测试代码

    public static void main(String[] args) {
        PriorityQ priorityQ=new PriorityQ(10);
        priorityQ.insert(10);
        priorityQ.insert(5);
        priorityQ.insert(77);
        priorityQ.insert(15);
        while(!priorityQ.isEmpty()){
            System.out.println(priorityQ.remove());
        }
    }

 

转载于:https://www.cnblogs.com/googlemeoften/p/4792972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值