我已经使用数组(学校工作)实现了一个优先级队列,如下所示:
int dequeue(int a[], int n){
int i, numberToDequeue;
numberToDequeue = a[0];
for(i = 0; i < n; i++){
a[i] = a[i+1];
}
return numberToDequeue;
}
在优先级队列中出列应该花费O(1)时间。
但是,在我的代码中,出队和
需要O(1)时间O(n)时间将所有元素向前移动1个索引。
我想知道是否有更好的解决方案,其时间复杂度为O(1)。
非常感谢所有形式的回复。
答案 0 :(得分:0)
int dequeue(int a[], int n){ //provided that the numbers are in ascending order
int numberToDequeue;
numberToDequeue = a[n - 1];
n--;
return numberToDequeue;
}