`
shenyu
  • 浏览: 122583 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PriorityQueue 优先级队列

阅读更多

提供一个基于定长数组的优先级队列,为了简便,只存储整数,假设数值越大,优先级越高。

工作时该队列按照数值的大小排列,出队时出优先级别最高的元素。

这已经不是普通意义上的队列(先进先出),叫优先级队列只是习惯。

构造函数:初始化队列大小

put:入队

get:出队

isEmpty:是否为空

普通队列请参见LinkedQueueQueue

另一个实现基于定长数组,见(PriorityQueue)

 

class PriorityQueue {
	private int[] array;
	private int top = -1;

	PriorityQueue(int capacity) {
		array = new int[capacity];
	}

	void put(int value) {
		assert top != array.length -1;
		int i;
		for(i=++top; i>0; i--) {
			if(array[i-1] < value) break;
			array[i] = array[i-1];
		}
		array[i] = value;	
	}

	int get() {
		assert top != -1;
		return array[top--];
	}

	boolean isEmpty() {
		return top == -1;
	}
	
	//测试代码
	public static void main(String[] args) {
		PriorityQueue q = new PriorityQueue(3);	
		assert q.isEmpty();
		q.put(10);
		q.put(5);
		q.put(20);
		assert !q.isEmpty();
		assert q.get() == 20;
		assert q.get() ==  10;
		assert q.get() == 5;
		assert q.isEmpty();
	}
}
 

 

 

分享到:
评论

相关推荐

    解析Java中PriorityQueue优先级队列结构的源码及用法

    优先级队列的核心特性包括: 1. **数据结构**:PriorityQueue使用二叉堆作为其数据结构,通常是一个最小堆,保证队头元素是最小的。 2. **比较规则**:队列中的元素必须实现Comparable接口,或者在创建队列时提供...

    优先级队列cpp文件PriorityQueue.cpp

    优先级队列cpp文件PriorityQueue.cpp

    PriorityQueue-MEX-Matlab 优先级队列 matlab

    总结来说,“PriorityQueue-MEX-Matlab”是一个利用MEX技术在MATLAB中实现的优先级队列库,它提供了一套高效的接口,便于在MATLAB环境中进行优先级队列的操作,如插入、删除和查询等。这个项目可能还包括了一些示例...

    优先级队列(堆实现)

    在Java中,优先级队列是通过`java.util.PriorityQueue`类来实现的,它基于一个二叉堆(Binary Heap)的数据结构。本文将深入探讨优先级队列的概念、实现方式以及如何在实际编程中使用。 首先,理解二叉堆是理解...

    一个用堆实现的优先级队列

    优先级队列是一种特殊的数据结构,它按照优先级顺序存储元素,最高优先级的元素总是在队列的前端。在计算机科学中,堆通常被用来实现优先级队列。堆是一种完全二叉树,其中每个父节点的值都大于或等于(最大堆)或...

    优先级队列头文件priorityqueue.h

    优先级队列头文件priorityqueue.h

    毕业设计MATLAB_优先级队列.zip

    PriorityQueue.m是MATLAB脚本或函数文件,很可能包含了优先级队列的实现代码。license.txt通常包含软件许可信息,说明了这些源代码的使用条件和限制。ignore.txt则可能是Git或版本控制系统中的忽略文件,指定了在...

    PriorityQueue带优先级的队列md,学习代码笔记

    **PriorityQueue带优先级的队列** `PriorityQueue`是Java集合框架中的一种特殊队列,它基于优先堆实现,可以自动对队列中的元素进行排序。与普通队列不同,`PriorityQueue`不是先进先出(FIFO)的数据结构,而是...

    排队matlab代码-MatlabPriorityQueue:为Matlab编写的优先级队列

    《MatlabPriorityQueue: 为Matlab编写的优先级队列》 在计算机科学中,优先级队列是一种特殊的数据结构,它允许我们按照优先级处理元素,而非按照它们进入队列的顺序。这种数据结构在许多算法和应用中都扮演着关键...

    java使用小根堆实现优先级队列的几种方式

    - **内部实现**:Java的`PriorityQueue`类已经实现了小根堆,我们可以通过直接使用这个类来创建优先级队列,如`PriorityQueue&lt;Integer&gt; queue = new PriorityQueue();`,然后可以调用`offer()`、`poll()`等方法进行...

    .NETPriorityQueue:使用C#中的二进制堆的自定义通用优先级队列实现。 (据我所知)它符合大多数.NET标准。不是线程安全的

    使用C#中的二进制堆的自定义优先级队列实现。为个人/俱乐部项目编写。 (据我所知)它符合大多数.NET标准。不是线程安全的。 信息 这段代码是从Java项目转换为利用C#功能集并在结构上更合理的东西。虽然原始的Java...

    Python实现一个优先级队列的方法

    以下是一个利用`heapq`实现的优先级队列类`PriorityQueue`: ```python import heapq class PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): heapq....

    Python实现优先级队列结构的方法详解

    ### Python 实现优先级队列结构的方法详解 #### 一、优先级队列概述 优先级队列(Priority Queue)是一种特殊的数据结构,它能够存储一系列具有不同优先级的元素。这种数据结构允许用户根据元素的优先级进行插入和...

    Java数组模拟优先级队列数据结构的实例

    虽然这种方法在性能上可能不如Java内置的`PriorityQueue`类高效,但对于学习理解优先级队列的工作原理和数据结构的实现是一个很好的实践。通过这种方式,我们可以更好地理解优先级队列的核心特性,以及如何通过基本...

    PriorityQueue-MEX-Matlab:这是 C++ STL 优先级队列的 Mexified MATLAB 包装器-matlab开发

    这是 C++ STL 优先级队列的 Mexified MATLAB 包装器这个优先队列实现很简单。 然而,它可以用来保存任意对象的“排序”列表。 我们可以只推送它的索引,而不是推送整个对象。 这是通过首先像往常一样将对象存储在 ...

    Java-PriorityQueue:任务优先级队列的实现

    任务的优先队列 基于任务的PriorityQueue的实现在此程序中,用户可以: 注册新任务,并传递名称和优先级 提取并返回列表中优先级最低的任务 清除任务列表 列出所有待处理的任务及其优先级 导入和导出CSV文件中的...

    Java队列源码-priority-queue:Java中优先级队列实现的源代码

    Java中的优先级队列(PriorityQueue)是一种特殊的队列,它按照元素的优先级进行排序。在Java集合框架中,PriorityQueue是位于java.util包下的一个类,它实现了Queue接口,但并不保证按照先进先出(FIFO)的顺序进行...

    Python利用heapq实现一个优先级队列的方法

    ### Python利用heapq实现优先级队列的方法 在Python中,`heapq`模块提供了一系列操作堆数据结构的函数,可以高效地实现优先级队列。优先级队列是一种特殊的队列,其中每个元素都有一个优先级,较高优先级的元素会先...

    Python cookbook(数据结构与算法)实现优先级队列的方法示例

    在优先级队列的实现中,我们定义了一个`PriorityQueue`类,它具有`push`和`pop`方法。`push`方法用于添加元素到队列中,它将新元素以及其优先级作为参数,并使用`heapq.heappush`函数将新元素添加到最小堆中。因为`...

Global site tag (gtag.js) - Google Analytics