在优先级队列中取消排队



我已经用数组(学校作业)实现了优先级队列,如下所示:

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;
}

相关内容

最新更新