Мой код сейчас имеет время вставки O (N) и время удаления O (1).Мне нужно изменить это вокруг. Я пытаюсь реализовать время вставки O (1) и время удаления O (N).
Легенда:
nItems = количество предметов / объектов.Первоначально установлено значение 0.
queArray - это мой массив длинных целых чисел.
Вот мои два метода.Метод вставки выполняет всю работу по сортировке.Удалите метод только одной строкой - чтобы удалить первый элемент в массиве, который оказывается наименьшим числом благодаря нашему методу вставки.
Если бы я изменил время вставки на O (1), мне нужно было бы дать"задача сортировки", чтобы удалить метод?В конце концов, это приоритетная очередь, и мы должны ее отсортировать, иначе это будет обычная очередь с номерами в случайном порядке.
Пожалуйста, любая помощь будет полезна !!!
public void insert(long item) {
int j;
if(nItems==0) // if no items,
queArray[nItems++] = item; // insert at 0
else {
for(j=nItems-1; j>=0; j--) { // start at the end
if( item > queArray[j] ) // if new item larger,
queArray[j+1] = queArray[j]; // shift upward
else // if smaller,
break; // done shifting
} // end for
queArray[j+1] = item; // insert it
nItems++;
} // end else (nItems > 0)
}
public long remove() // remove minimum item
{ return queArray[--nItems]; }