C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

dokumen-dokumen yang mirip
Praktikum Queue dan PriorityQueue

PoliteknikElektronikaNegeri Surabaya

Politeknik Elektronika Negeri Surabaya

Queue dan Priority Queue

PRAKTIKUM 19 JAVA COLLECTION FRAMEWORK : SET DAN LIST

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Gambar 1. Single Linked List

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

Gambar 1. Single Linked List

Gambar 1. Single Linked List

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Politeknik Elektronika Negeri Surabaya

Gambar 1. Single Linked List

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Gambar 1. Ilustrasi Stack

Politeknik Elektronika Negeri Surabaya

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Permainan Remi Sederhana

Politeknik Elektronika Negeri Surabaya

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

MODUL III ARRAYLIST TUGAS PENDAHULUAN

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Algoritma dan Struktur Data. Queue

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

B.1 Mengurutkan Obyek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

Gambar 1. Ilustrasi Stack

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Badiyanto, S.Kom., M.Kom. PBO java

IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA

PRAKTIKUM 17 MENANGANI EXCEPTION

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

IF PEMROGRAMAN LANJUT PERULANGAN. Oleh : Andri Heryandi, M.T.

PEMAHAMAN DASAR DASAR JAVA

A. Judul Percobaan/praktikum Tipe Data, Keyword, Variabel, Operator dan Teknik Konfersi

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Elemen Dasar Dalam Bahasa Java

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

DASAR PEMOGRAMAN JAVA

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

BAHASA PEMROGRAMAN JAVA

IKI 20100: Struktur Data & Algoritma

Anonymous Inner Class

Praktikum tentang Collection Permainan Remi

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

LAPORAN PRAKTIKUM RESMI QUEUE

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Algoritma dan Struktur Data STACK

Percabangan & Perulangan

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAB 1 KONSEP DASAR JAVA

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep Enum 2. Memahami bentuk-bentuk penggunaan Enum 3. Memahami fungsi-fungsi yang terdapat di Enum

Praktikum Exception Handling

OPERATOR-OPERATOR DALAM JAVA

MATERI PRAKTIKUM 2 ARRAY

A. TUJUAN PEMBELAJARAN

PERCOBAAN 1 : Ketik program di bawah ini, bila terjadi kasalahan waktu compile dan runtime, betulkan!

IKG2I4 / Software Project I

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

Praktikum KPLBO Final Object Concept I

Java Generic & Collection

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

A. TUJUAN PEMBELAJARAN

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Struktur Kontrol Pemrograman Java : PERCABANGAN

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Politeknik Elektronika Negeri Surabaya

Percabangan & Perulangan

Operator dan Assignment

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN 1. Mengenal berbagai macam bentuk operator 2. Memahami penggunaan berbagai macam jenis operator yang ada di Java

Struktur Data dan Algoritma

Gambar 17.1Representasi Sebuah Node di Double Linked List. Gambar 17.2 Double Linked List

Operator, Statement kondisional, dan Iterasi pada Java

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

B. DASAR TEORI Array. Misalkan kita memiliki tiga data yang berbeda dan kita simpan dalam variabel yang berbeda.

Pemrograman Berorientasi Objek. Beni Suranto, S.T.

MEMBUAT OBJECT COMPARABLE DAN COMPARATOR

Membuat Object Comparable

A. TUJUAN PEMBELAJARAN 1. Memahami konsep Class LinkedList di Collection 2. Memahami penggunaan method-method pada Class LinkedList.

Sistem Tersebar 1 PAGE 10

Pemrograman Berbasis Objek Operator dan Assignment

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

MESIN ATM. Gambar 1. Gambar 2

Percobaan 5 Paket dan Import, Interface

Transkripsi:

PRAKTIKUM 24 PRIORITY QUEUE A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami konsep Priority Queue 2. Memahami implementasi dari Priority Queue 3. Memahami Representasi dan alternative dari model penyimpan antrian B. DASAR TEORI Dalam antrian yang telah dibahas di atas, semua elemen yang masuk dalam antrian dianggap mempunyai prioritas yang sama, sehingga elemen yang masuk lebih dahulu akan diproses lebih dahulu. Dalam praktek, elemen-elemen yang akan masuk dalam suatu antrian ada yang dikatakan mempunyai prioritas yang lebih tinggi dibanding yang lain. Antrian yang demikian ini disebut dengan antrian berprioritas (priority queue). Dalam antrian berprioritas, setiap elemenn yang akan masuk dalam antrian sudah ditentukan lebih dahulu prioritasnya. Dalam hal ini berlaku dua ketentuan, yaitu: 1. Elemen-elemen yang mempunyai prioritas lebih tinggi akan diproses lebih dahulu. 2. Dua elemen yang mempunyai prioritas sama akan dikerjakan sesuai dengan urutan pada saat kedua elemen ini masuk dalam antrian. Dengan memperhatikan kedua ketentuan di atas, akan berlaku ketentuan bahwa elemen yang mempunyai prioritas lebih tinggi akan dikerjakan lebih dahulu dibanding elemen yang mempunyai prioritas lebih rendah, meskipun elemen yang berprioritas tinggi masuknya sesudah elemen yang berprioritas rendah. Salah satu contoh antrian berprioritas ini adalah pada sistem berbagi waktu (time-sharing system) dimana program yang mempunyai prioritas tinggi akan dikerjakan lebih dahulu dan program-program yang berprioritas sama akan membentuk antrian biasa. C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.! 180

D. PERCOBAAN D.1 Class PriorityQueue di Collection Percobaan 1 : Memahami Penggunaan dari class PriorityQueue import java.util.*; public class PriorityQueueDemo { PriorityQueue<String> stringqueue; stringqueue = new PriorityQueue<String>(); stringqueue.add("ab"); stringqueue.add("abcd"); stringqueue.add("abc"); stringqueue.add("a"); while (stringqueue.size() > 0) { System.out.println(stringQueue.remove()); Percobaan 2 : Memahami Penggunaan dari class PriorityQueue dan data yang tersimpan dalam objek PriorityQueue mengimplementasikan interface Comparator. import java.util.comparator; import java.util.priorityqueue; public class PQueueTest { PriorityQueue<Integer> pqueue = new PriorityQueue<Integer>(10, new Comparator<Integer>() { public int compare(integer int1, Integer int2) { boolean flag1 = isprime(int1); boolean flag2 = isprime(int2); if (flag1 == flag2) { return int1.compareto(int2); else if (flag1) { return -1; else if (flag2) { return 1; return 0; ); pqueue.add(1); pqueue.add(5); pqueue.add(6); pqueue.add(4); pqueue.add(2); pqueue.add(9); pqueue.add(7); pqueue.add(8); pqueue.add(10); pqueue.add(3); 181

while (true) { Integer head = pqueue.poll(); if (head == null) { break; System.out.print(head + " <-- "); /** * * @param n * @return */ public static boolean isprime(int n) { if (n <= 1) { return false; if (n == 2) { return true; if (n % 2 == 0) { return false; long m = (long) Math.sqrt(n); for (long i = 3; i <= m; i += 2) { if (n % i == 0) { return false; return true; Percobaan 3. Memahami Penggunaan dari class PriorityQueue dan data yang tersimpan adalah data Product. import java.util.comparator; import java.util.priorityqueue; enum ProductQuality { High, Medium, Low class Product implements Comparable<Product> { String name; ProductQuality priority; Product(String str, ProductQuality pri) { name = str; priority = pri; public int compareto(product msg2) { 182

return priority.compareto(msg2.priority); class MessageComparator implements Comparator<Product> { public int compare(product msg1, Product msg2) { return msg2.priority.compareto(msg1.priority); public class Main { public static void main(string args[]) { PriorityQueue<Product> pq = new PriorityQueue<Product>(3); pq.add(new Product("A", ProductQuality.Low)); pq.add(new Product("B", ProductQuality.High)); pq.add(new Product("C", ProductQuality.Medium)); Product m; while ((m = pq.poll())!= null) { System.out.println(m.name + " Priority: " + m.priority); PriorityQueue<Product> pqrev = new PriorityQueue<Product>(3, new MessageComparator()); pqrev.add(new Product("D", ProductQuality.Low)); pqrev.add(new Product("E", ProductQuality.High)); pqrev.add(new Product("F", ProductQuality.Medium)); while ((m = pqrev.poll())!= null) { System.out.println(m.name + " Priority: " + m.priority); D.2 Membuat Class PriorityQueue sendiri Untuk membuat class PriorityQueue sendiri buatlah interface PQueue Tabel 24.1 Interface PriorityQueue Interface PQueue boolean isempty() Mengembalikan nilai true jika queue kosong dan false jika queue terdapat minimal satu elemen T peek() Mengembalikan elemen dengan prioritas tertinggi. Jika queue kosong melempar exception yaitu: throws NoSuchElementException. T pop() Menghapus elemen di depan queue dan mengembalikan nilai berdasarkan prioritas tertinggi. Jika queue kosong maka melempar exception yaitu : NoSuchElementException. void push(t item) Menyisipkan item di queue int size() Mengembalikan jumlah elemen dari queue 183

Membuat Class HeapPQueue, dengan mengurutkan data menggunakan Comparator atau Comparable import java.util.collections; import java.util.comparator; import java.util.linkedlist; public class HeapPQueue<T extends Comparable<? super T>> implements PQueue<T> { private LinkedList<T> qlist = null; private Comparator<T> comparator = null ; public HeapPQueue() { qlist= new LinkedList<T>(); public HeapPQueue(Comparator comp) { qlist= new LinkedList<T>(); comparator = comp ; public boolean isempty() { public T peek() { public T pop() { public void push(t item) { public int size() { Selanjutnya lakukan pengujian terhadap Class HeapPQueue menggunakan studi kasus 1-3 yang 184

Studi Kasus 1 public class HeapPQueueDemo1 { Comparator comparator = Collections.reverseOrder(); HeapPQueue<String> pq = new HeapPQueue<String>(comparator); pq.push("c"); pq.push("a"); pq.push("b"); System.out.println(pq.pop()); System.out.println(pq); Studi Kasus 2 public class HeapPQueueDemo2 { HeapPQueue pq = new HeapPQueue(new PrimaComparator()); pq.push(1); pq.push(5); pq.push(6); pq.push(4); pq.push(2); pq.push(9); pq.push(7); pq.push(8); pq.push(10); pq.push(3); while(!pq.isempty()) System.out.print(pq.pop()+" "); Studi Kasus 3 public class HeapPQueueDemo3 { HeapPQueue<Product> pq = new HeapPQueue<Product>(); pq.push(new Product("A", ProductQuality.Low)); pq.push(new Product("B", ProductQuality.High)); pq.push(new Product("C", ProductQuality.Medium)); while (!pq.isempty()){ System.out.println(pq.pop().toString()); 185

E. LATIHAN Sebuah bank N, terdapat aturan antrian, nasabah dengan saldo besar akan mendapatkan prioritas tinggi. Terdapat 5 nasabah bank siap untuk memasuki antrian. Berikut adalah informasi nasabah dan tabungan dari nasabah tersebut. Bagaimana output dari antrian? Implementasikan pada program yang sudah dibuat pada point D.2 No Nama Jumlah Tabungan 1 Andi 2.000.000 2 Budi 10.000.000 3 Cahya 15.000.000 4 Dinda 12.000.000 5 Rudi 3.000.000 F. LAPORAN RESMI Kerjakan hasil percobaan(d) dan latihan(e) di atas dan tambahkan analisa. 186