博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java优先级队列实现
阅读量:5015 次
发布时间:2019-06-12

本文共 987 字,大约阅读时间需要 3 分钟。

优先级队列数组实现:

public class PriorityQueue {	private int[] data;	private int size;		public PriorityQueue(int size){		data = new int[size];		this.size = 0;	}		public void push(int toInsert) throws Exception{		if(size == data.length)			throw new Exception("Queue is full!");		if(size == 0){			data[0] = toInsert;		}else{			int i = size -1;			for( ; i >= 0 ; i--){				if(data[i] < toInsert){					data[i+1] = data[i];				}else{					break;				}			}			data[i+1] = toInsert;		}		size++;	}		public int pop() throws Exception{		if(this.size == 0)			throw new Exception("Queue is empty!");		return data[--size];	}		public int peek() throws Exception{		if(this.size == 0)			throw new Exception("Queue is empty!");		return data[size-1];	}		public int size(){		return this.size;	}		public boolean isEmpty(){		return (size == 0);	}		public boolean isFull(){		return (size == data.length);	}}

由于插入操作有可能需要移动数组中的数据项,故插入操作的时间复杂度为(0+N)/2,即O(N)

删除操作的时间复杂度为O(1)

转载于:https://www.cnblogs.com/sean-zou/p/3709987.html

你可能感兴趣的文章
win7下请求操作需要提升
查看>>
杨森翔人日诗词;人日书法
查看>>
江城子.东风一笛到兰山
查看>>
我的BO之强类型
查看>>
One-hot 编码/TF-IDF 值来提取特征,LAD/梯度下降法(Gradient Descent),Sigmoid
查看>>
时间戳转时间
查看>>
用Python实现链表Linklist
查看>>
android录音功能的实现
查看>>
vue 里ref的使用
查看>>
day2
查看>>
JAVA 类的加载
查看>>
App 性能测试分享
查看>>
android环境的搭配
查看>>
69期-Java SE-020-IO流-1-001-002
查看>>
在阿里云搭建ThinkPHP模板的网站
查看>>
【洛谷 3905】道路重建
查看>>
Filebeat安装部署
查看>>
由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
查看>>
面向对象3
查看>>
算法(第四版)C# 习题题解——1.1
查看>>