ArrayIndexOutOfBoundsException
означает, что вы пытаетесь получить доступ к индексу массива, который не существует или не связан с границей этого массива. Индексы массива начинаются с 0 и заканчиваются на длину - 1.
В вашем случае
for(int i = 0; i<=name.length; i++) {
System.out.print(name[i] +'\n'); // i goes from 0 to length, Not correct
}
ArrayIndexOutOfBoundsException
происходит, когда вы пытаетесь получить доступ к элементу index.length, который делает не существует (индекс массива заканчивается на -1). просто заменяя & lt; = с & lt; решит эту проблему.
for(int i = 0; i < name.length; i++) {
System.out.print(name[i] +'\n'); // i goes from 0 to length - 1, Correct
}
В документе говорится об используемой приоритетной очереди:
Учитывая эти потребности, приоритетная очередь является привлекательным выбором , тем более что эта структура данных изначально поддерживает несколько элементов с одинаковым приоритетом (удаление из очереди в произвольном порядке).
Поскольку повторяющиеся записи не очень полезны в алгоритме, их нужно обрабатывать специально.
Функция adjust
, которая удаляет минимальный составной элемент, продолжает корректировать приоритетную очередь до тех пор, пока не будет уверенно, что все дубликаты минимального элемента удалены:
adjust table
| n <= x = adjust (PQ.deleteMinAndInsert n_ ns table)
| otherwise = table
where ...
Если текущий первый элемент ( n
) было достаточно маленьким, чтобы его можно было удалить, а затем снова вызовите функцию adjust, чтобы также проверить следующий элемент в оставшейся очереди. Только когда не осталось мелких элементов, он перестает повторяться.