我正在使用数组编写优先级队列代码。我想创建一个方法来更改队列的大小,并在队列填充75%时扩展队列的大小。有人可以帮忙吗?
这是我的方法:
public void insert(T object) {
if (object == null) throw new IllegalArgumentException();
if (size == heap.length - 1) throw new IllegalStateException();
heap[++size] = object;
swim(size);
}
答案 0 :(得分:0)
怎么样:
public void insert(T object) {
if (object == null) throw new IllegalArgumentException();
if (size >= 0.75*heap.length) {
resize(2*heap.length);
}
heap[++size] = object;
}
private void resize(int newSize) {
T[] newHeap = (T[])new Object[newSize];
System.arraycopy(heap, 0, newHeap, 0, size);
heap = newHeap;
}