最小索引优先队列(利用堆来实现)

本文介绍了如何利用堆数据结构设计并实现一个最小索引优先队列,包括API设计、代码实现和测试过程,展示了如何通过索引来优先获取最小值。
摘要由CSDN通过智能技术生成

1.知识储备:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.API设计:
在这里插入图片描述
3.代码实现:

package PriorityQueue;

public class IndexMinPriorityQueue<T extends Comparable<T>> {
   
    //用来存储元素的数组
	private T[] items;
	//保存每个元素在数组items中的索引,pq数组需要堆有序
	private int[] pq;
	//保存qp的逆序,pq的值作为索引,pq的索引作为值
	private int[] qp;
	//记录堆中元素个数
	private int N;
	
	public IndexMinPriorityQueue(int capacity) {
   
		// TODO Auto-generated constructor stub
		this.items=(T[])new Comparable[capacity+1];
		this.pq=new int[capacity+1];
		this.qp=new int[capacity+1];
		this.N=0;
		//默认情况下,队列中没有存储任何元素,让qp中的元素都为-1
		for(int i=0;i<qp.length;i++){
   
			qp[i]=-1;
		}
	}
	
	//判断堆中索引i处的元素是否小于索引j处的元素
	private boolean less(int i,int j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值