优先队列初级实现
来源:互联网 发布:网络布线报价单2016 编辑:程序博客网 时间:2024/06/05 07:31
import java.awt.Font;
import java.util.Arrays;
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.StdDraw;
import edu.princeton.cs.algs4.StdRandom;
import java.util.Iterator;
public class MaxPQ
{// 优先队列中的初级实现
private int[] a;
private int N;
public MaxPQ()
{// 创建一个优先队列
a = new int[100];
}
public MaxPQ(int max)
{// 创建一个最大容量为max的优先队列
a = new int[max];
}
public MaxPQ(int[] b)
{// 用a[]中的元素创建一个优先队列
int len = b.length;
a = new int[len];
for(int i=0; i<len; i++)
{
a[i] = b[i];
}
}
public void insert(int v)
{// 向优先队列中插入一个元素
a[N++] = v;
}
public int max()
{// 返回最大元素
int max = a[0];
for(int i=1; i<N; i++)
{
if(less(max, a[i]))
max = a[i];
}
return max;
}
public boolean less(int v, int w)
{
return v < w;
}
public int delMax()
{// 删除并返回最大元素
int max = 0;
for(int i=1; i<N; i++)
{
if(less(a[max], a[i]))
max = i;
}
exch(a, max, N-1);
int item = a[--N];
return item;
}
public void exch(int[] a, int i, int j)
{// 对换元素
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
public boolean isEmpty()
{// 返回队列是否为空
return N == 0;
}
public int size()
{// 返回队列中元素的个数
return N;
}
public void resize(int max)
{// 调整数组大小
int[] b = new int[max];
for(int i=0; i<N; i++)
{
b[i] = a[i];
}
a = b;
}
public void show()
{// 显示数组的内容
for(int i=0; i<N; i++)
{
StdOut.printf(a[i] + " ");
}
StdOut.println();
}
public static void main(String[] args)
{
int len = StdIn.readInt();
MaxPQ maxPq = new MaxPQ(len);
for(int i=0; i<len; i++)
{
maxPq.insert(StdIn.readInt());
}
maxPq.show();
for(int i=0; i<len; i++)
{
StdOut.printf(maxPq.delMax() + " ");
}
}
import java.util.Arrays;
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.StdDraw;
import edu.princeton.cs.algs4.StdRandom;
import java.util.Iterator;
public class MaxPQ
{// 优先队列中的初级实现
private int[] a;
private int N;
public MaxPQ()
{// 创建一个优先队列
a = new int[100];
}
public MaxPQ(int max)
{// 创建一个最大容量为max的优先队列
a = new int[max];
}
public MaxPQ(int[] b)
{// 用a[]中的元素创建一个优先队列
int len = b.length;
a = new int[len];
for(int i=0; i<len; i++)
{
a[i] = b[i];
}
}
public void insert(int v)
{// 向优先队列中插入一个元素
a[N++] = v;
}
public int max()
{// 返回最大元素
int max = a[0];
for(int i=1; i<N; i++)
{
if(less(max, a[i]))
max = a[i];
}
return max;
}
public boolean less(int v, int w)
{
return v < w;
}
public int delMax()
{// 删除并返回最大元素
int max = 0;
for(int i=1; i<N; i++)
{
if(less(a[max], a[i]))
max = i;
}
exch(a, max, N-1);
int item = a[--N];
return item;
}
public void exch(int[] a, int i, int j)
{// 对换元素
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
public boolean isEmpty()
{// 返回队列是否为空
return N == 0;
}
public int size()
{// 返回队列中元素的个数
return N;
}
public void resize(int max)
{// 调整数组大小
int[] b = new int[max];
for(int i=0; i<N; i++)
{
b[i] = a[i];
}
a = b;
}
public void show()
{// 显示数组的内容
for(int i=0; i<N; i++)
{
StdOut.printf(a[i] + " ");
}
StdOut.println();
}
public static void main(String[] args)
{
int len = StdIn.readInt();
MaxPQ maxPq = new MaxPQ(len);
for(int i=0; i<len; i++)
{
maxPq.insert(StdIn.readInt());
}
maxPq.show();
for(int i=0; i<len; i++)
{
StdOut.printf(maxPq.delMax() + " ");
}
}
阅读全文
0 0
- 优先队列初级实现
- Python实现优先队列
- 优先队列实现堆
- 优先队列的实现
- 优先队列实现栈
- Python实现优先队列
- 优先队列实现
- 优先队列(堆实现)
- 实现一个优先队列
- 优先队列 C实现
- C++实现优先队列
- 优先队列的实现
- 用 C# 实现优先队列
- 用 C# 实现优先队列
- Huffman编码优先队列实现
- 用堆实现优先队列
- C++ 大根堆 实现优先队列
- 优先队列实现Huffman树
- SqlServer存储过程(output参数)
- 预测数值型数据:回归
- Android Studio修改编译JDK
- 有序数组合并
- linux应用领域-----移动客户端====Android系统和linux内核的关系详解
- 优先队列初级实现
- Unity中的各种坐标系深入剖析
- MySQL VARCHAR字段最大长度到底是多少
- css
- python list排序的两种方法及实例讲解
- 码率和分辨率
- 有序表查找——折半查找,又为二分法
- 最大子矩阵(二维树状数组)
- (1)selenium常见问题-日历