我已经用数组(学校作业)实现了优先级队列,如下所示:
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) 的时间复杂度。
所有形式的答复将不胜感激。
int dequeue(int a[], int n){ //provided that the numbers are in ascending order
int numberToDequeue;
numberToDequeue = a[n - 1];
n--;
return numberToDequeue;
}