Общая идея для несортированной очереди с приоритетами в том случае, если вы храните ее в массиве:
Вставка:
- Добавить элемент в качестве последнего элемента вмассив.
- Увеличение
count
.
Удаление:
- Сканирование массива для поиска индекса наименьшего элемента.
- Скопируйте значение из этого индекса в переменную с именем
result
- Скопируйте последнее значение в массиве в это место
- Уменьшение
count
. - Возврат
result
Таким образом, вставка становится (в псевдокоде)
insert(value)
a[count] = value
count = count + 1
deleteMin:
deleteMin()
minIndex = findMinIndex()
result = a[minIndex]
a[minIndex] = a[count-1]
count = count - 1
return result
findMinIndex:
findMinIndex()
if (count < 1) then error
minIndex = 0
for (i = 1; i < count; ++i)
if (a[i] < a[minIndex])
minIndex = i
return minIndex
И findMin:
findMinIndex()
return a[findMinIndex()]
Я оставлю вам реализацию C ++.