Antrian prioritas
Jika kami menetapkan setiap elemen angka untuk menandai prioritasnya, kami mungkin juga membuat angka yang lebih kecil memiliki prioritas yang lebih tinggi sehingga kami dapat mengakses elemen prioritas tertinggi dalam koleksi dan mencari dan menghapusnya. Dengan cara ini, kami memperkenalkan struktur data seperti antrian prioritas. Antrian prioritas adalah kumpulan 0 atau lebih elemen, setiap elemen memiliki prioritas. Operasi yang dilakukan pada antrian prioritas termasuk (1) pencarian (2) Masukkan elemen baru (3) penghapusan. Secara umum, operasi pencarian digunakan untuk mencari elemen dengan prioritas terbesar, dan operasi penghapusan digunakan untuk menghapus elemen. Untuk unsur-unsur dengan prioritas yang sama, mereka dapat diproses dalam urutan pertama di pertama atau dalam prioritas apa pun.
Antrian Simulasi Array Java
Antrian adalah tabel linier khusus yang hanya memungkinkan operasi penghapusan di ujung depan tabel dan menyisipkan operasi di ujung belakang tabel. Akhir yang melakukan operasi penyisipan disebut ekor tim, dan akhir yang melakukan operasi penghapusan disebut kepala tim. Ini adalah prinsip pertama-out pertama (FIFO) yang sering kita gunakan. Daftar di Java dapat digunakan sebagai antrian. Jika Anda menambahkan elemen di akhir antrian, gunakan metode List.Add, dan jika Anda menghapus elemen dari kepala antrian, gunakan metode List.remove.
Java Array Simulation Prioritas Antrian Struktur Contoh:
paket data; impor java.util.arrays; impor java.util.comparator; / *** Gunakan array untuk mensimulasikan struktur tabel linear peringkat pertama dan garis pertama dengan prioritas tinggi.* Mirip dengan TreeSet dan TreeMap menggunakan pembanding*/ kelas publik SimulatePriorityQueue {public static void main (string [] args) {simulatePriorityqueue quueUe = new SimulePriorityQueue (4); // simulatequeue antrian = new simulateQueue (); // System.out.println ("Ambil elemen:" + 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 ("Take Out Element:" + Queue.peek ()); System.out.println ("Take Out Element:" + Queue.Remove ()); System.out.println ("Take Out Element:" + Queue.Remove ()); System.out.println ("Elemen Ekstrak:" + Queue.Remove ()); // System.out.println ("Elemen Ekstrak:" + Queue.Remove ()); System.out.println ("Size:" + Queue.size ()); System.out.println (); } private int msize = 3; // Ukuran Private Int [] Marray; // array private int mnextitem; // posisi berikutnya, juga dapat dianggap sebagai jumlah elemen saat ini simulePriorityqueuee () {marray = int new int [mSize]; mnextitem = 0; } public SimulatePriorityQueue (ukuran int) {this.msize = size; marray = int baru [mSize]; mnextitem = 0; } / *** Sisipkan elemen* @param item* / public void insert (int item) {if (! ISFULL ()) {marray [mnextitem ++] = item; untuk (int i = 0; i <mnextitem; i ++) {// bubblestone untuk (int j = 0; j <mnextitem - 1; j ++) {if (marray [j]> marray [j + 1]) {marray [j] = marray [j + 1] + 0 * (marray [j + [j + 1) = marray [j + 1] + 0 * (marray [j + [j + [j + 1; System.out.println (arrays.tostring (marray)); }} System.out.println (arrays.tostring (marray)); } else {System.out.println ("----------------"); }} / *** Hapus elemen pertama-dalam-pertama* @return* / public int rape () {if (! IsEmpty ()) {return marray [-mnextitem]; } else {lempar baru ilegalargumentException ("tidak ada elemen yang bisa diambil"); }} / *** Periksa elemen sebelumnya* @return* / public int peek () {return marray [mnextitem - 1]; } / *** apakah itu kosong* @return* / public boolean isEmpty () {return mnextitem == 0; } / *** apakah itu penuh* @return* / public boolean isfull () {return mnextitem == msize; } / ** * size * @return * / public int size () {return mnextItem; }} Hasil output:
[1, 0, 0, 0] [1, 3, 0, 0] [1, 2, 3, 0] [1, 2, 3, 0] [1, 2, 3, 5] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------