я реализовал очереди приоритета с массива (работы школы), и это выглядит, как показано ниже:Dequeue в приоритетной очереди
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;
}
Dequeue в приоритетной очереди должны принимать O (1) время.
Тем не менее, в моем коде, это занимает O (1) время DEQUEUE и
O (N) время, чтобы переместить все элементы в передний на 1 индекс.
Мне было интересно, есть ли лучшее решение, имеющее сложность времени O (1).
Вся форма ответа будет принята с благодарностью.
Очереди на самом деле не должны быть помещены в непрерывной памяти ... – ForceBru
Lookup C++ кольцевой буфер –
Ну, я понял, что я на самом деле могу сортировать мои номера в порядке возрастания, так что я могу просто уменьшить свой ARRAYSIZE после каждый dequeue вместо того, чтобы иметь цикл for, чтобы сдвинуть каждый элемент вперед на 1 индекс. – Kai