首页 / 算法 / Java数据结构与算法笔记——优先级队列
Java数据结构与算法笔记——优先级队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java数据结构与算法笔记——优先级队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1845字,纯文字阅读大概需要3分钟。
内容图文
![Java数据结构与算法笔记——优先级队列](/upload/InfoBanner/zyjiaocheng/607/55a4f509c9a44c05988c268f8b39a762.jpg)
文章目录
优先级队列介绍
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。
在优先队列中,元素被赋予优先级。在插入元素时,要按照优先级找到正确的位置并插入。
实现一个简单的优先级队列
数值的大小作为优先级,数值越大优先级越高。
插入:根据元素的大小插入。
取出:取出队头元素。
在这里插入代码片package queue;
public class QueueTest3 {
public static void main(String[] args) {
PriorityQueue queue = new PriorityQueue(3);
queue.insert(1);
queue.insert(100);
queue.insert(23);
queue.insert(25);
// System.out.println(queue.peek());
while (!queue.isEmpty()){
System.out.println(queue.removeHeader());
}
}
}
class PriorityQueue{
private int[] elements;
private int maxSize;
private int nElems;
public PriorityQueue(int size){
elements = new int[size];
maxSize = size;
nElems = 0;
}
//插入数据
public void insert(int data){
if(nElems==0){//空队列
elements[nElems++] = data;
} else if(nElems != maxSize){
int j = nElems-1;
while(j>=0 && data>elements[j]){
//队列从大到小排序,所以从后向前遍历队列,如果队列中的元素比data小,就把元素往后移动
elements[j+1] = elements[j];
j--;
}
elements[j+1] = data;
nElems ++;
}
}
//读队尾数据
public int peek(){
if(nElems != 0){
return elements[nElems-1];
}else{
return -1; //我们设定-1表示没数据
}
}
// //取出数据,取出队尾的一个元素
// public int remove(){
// int removeData = -1;
// if(nElems != 0){
// removeData = elements[nElems-1];
// elements[nElems-1] = -1;//-1表示没有元素
// nElems--;
// }
// return removeData;
// }
//取出数据,取出队头的一个元素
public int removeHeader(){
int removeData = -1;
if(nElems != 0){
removeData = elements[0];
for(int i=0;i<nElems-1;i++){
elements[i] = elements[i+1];
}
elements[nElems-1] = -1;//-1表示没有元素
nElems--;
}
return removeData;
}
//判断是否为空
public boolean isEmpty(){
return (nElems == 0);
}
}
内容总结
以上是互联网集市为您收集整理的Java数据结构与算法笔记——优先级队列全部内容,希望文章能够帮你解决Java数据结构与算法笔记——优先级队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。