Приоритетная очередь
Если мы назначаем каждому элементу число, чтобы отметить его приоритет, мы могли бы также сделать меньшие числа иметь более высокий приоритет, чтобы мы могли получить доступ к наивысленному приоритетному элементу в коллекции и поиске и удалите его. Таким образом, мы вводим структуру данных, такую как приоритетную очередь. Приоритетная очередь - это коллекция из 0 или более элементов, каждый элемент имеет приоритет. Операции, выполненные в очереди приоритета, включают (1) Поиск (2) Вставьте новый элемент (3) удаление. Как правило, операция поиска используется для поиска элемента с наибольшим приоритетом, а операция удаления используется для удаления элемента. Для элементов с тем же приоритетом они могут быть обработаны в порядке первого в порядке или в любом приоритете.
Java массив
Очередь - это специальная линейная таблица, которая позволяет только операции удаления на переднем конце таблицы и вставлять операции на заднем конце таблицы. Конец, который выполняет операцию вставки, называется хвостом команды, а конец, выполняющий операцию по удалению, называется главой команды. Это первый принцип первого в первом выходе (FIFO), который мы часто используем. Список в Java может быть использован в качестве очереди. Если вы добавите элементы в конце очереди, используйте метод списка. Ада, и если вы удаляете элементы из головы очереди, используйте метод списка.
Java массив моделирования приоритетной структуры очереди: Пример:
пакет данных; импортировать java.util.arrays; Импорт java.util.comparator; / *** Используйте массивы для имитации линейной структуры таблицы первого ранга и первого выхода с высоким приоритетом.* Аналогично деревьям и тремап с использованием компаратора*/ public class SymulateQueque {public static void main (string [] args) {SimulatePriorityqueue Queue = new SymatureTyqueueue (4); // SimulateQueue Queue = new SymulateQueue (); // System.out.println ("Извлечь элемент:" + queue.remove ()); queue.insert (1); queue.insert (3); queue.insert (2); queue.insert (5); queue.insert (4); System.out.println ("size:" + queue.size ()); System.out.println ("peek:" + queue.peek ()); System.out.println («Установите элемент:» + queue.peek ()); System.out.println («Установите элемент:» + queue.remove ()); System.out.println («Установите элемент:» + queue.remove ()); System.out.println ("Extract Element:" + queue.remove ()); // System.out.println ("Extract Element:" + queue.remove ()); System.out.println ("size:" + queue.size ()); System.out.println (); } private int msize = 3; // size private int [] marray; // Array Private int mnextitem; // Следующая позиция, также может рассматриваться как текущее количество элементов public SymulatePriorityQueue () {marray = new int [msize]; mnextitem = 0; } public SimulatePriorityQueue (int size) {this.msize = size; marray = new int [msize]; mnextitem = 0; } / *** Вставить элемент* @param item* / public void insert (int item) {if (! Isfull ()) {marray [mnextitem ++] = item; for (int i = 0; i <mnextitem; i ++) {// bubblestone for (int j = 0; j <mnextitem - 1; j ++) {if (marray [j]> marray [j + 1]) {marray [j] = marray [j + 1] + 0 * (marray [j + 1] = marray [j]); System.out.println (Arrays.toString (Marray)); }} System.out.println (Arrays.tostring (marray)); } else {System.out.println ("----------------"); }} / *** Удалить элемент сначала в первую очередь* @return* / public int remove () {if (! Isempty ()) {return marray [-mnextitem]; } else {бросить новое allosalargumentException («Элемент не может быть выведен»); }} / *** Проверьте предыдущий элемент* @return* / public int peek () {return marray [mnextitem - 1]; } / *** Это пусто* @return* / public boolean isempty () {return mnextitem == 0; } / *** Это полное* @return* / public boolean isfull () {return mnextitem == msize; } / ** * size * @return * / public int size () {return mnextitem; }} Результат вывода:
[1, 0, 0, 0] [1, 3, 0, 0].