【发布时间】:2011-05-03 12:51:29
【问题描述】:
我的代码现在有 O(N) 的插入时间和 O(1) 的删除时间。我需要改变这个。 我正在尝试实现 O(1) 插入时间和 O(N) 删除时间。
传奇:
nItems = 项目/对象的数量。初始设置为 0。
queArray 是我的长整数数组。
这是我的两种方法。插入方法完成所有排序工作。 Delete 方法只需一行 - 删除数组中的第一个元素,这要归功于我们的 Insert 方法。
如果我要将插入时间更改为 O(1),我是否需要提供“排序任务”来删除方法?毕竟这是一个优先级队列,我们必须对其进行排序,否则它只是一个常规队列,数字随机排列。
拜托,任何帮助都会很好!!!
public void insert(long item) {
int j;
if(nItems==0) // if no items,
queArray[nItems++] = item; // insert at 0
else {
for(j=nItems-1; j>=0; j--) { // start at the end
if( item > queArray[j] ) // if new item larger,
queArray[j+1] = queArray[j]; // shift upward
else // if smaller,
break; // done shifting
} // end for
queArray[j+1] = item; // insert it
nItems++;
} // end else (nItems > 0)
}
public long remove() // remove minimum item
{ return queArray[--nItems]; }
【问题讨论】:
标签: java data-structures queue priority-queue