KUG1A3 Algoritma& Pemrograman Burhanuddin D Prodi S1-Sistem Komputer, F Teknik Elektro Universitas Telkom Presentasi Array 3 : Binary Searching
KUG1A3 Algoritma & Pemrograman Binary Search Teknik ini hanya dapat diterapkan pada data yang terurut Pencarian dilakukan dengan memeriksa titik tengah dari tabel. Pencarian dengan cara ini akan mengurangi waktu pencarian karena pembandingan harga direduksi secara logaritmik (dengan basis 2). Kecepatan pencarian sebanding dengan ln (N). KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Binary Search Cara kerja : Bandingkan harga yang dicari dengan harga elemen tengah ( titik tengah ) jika sama, berarti ketemu jika titik tengah lebih besar, cari pada belahan bagian kiri. jika titik tengahi lebih kecil, cari pada belahan bagian kanan. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Binary Search Misal : Dicari nilai 7 Data : {1,5,7,9,10, 12,17} 1 5 7 9 10 12 17 Awal Akhir Titik Tengah Akhir Titik Tengah = 7 ? = 7 ? Cari di sisi kanan TTengah > 7 TTengah < 7 Cari di sisi kiri KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Binary Search Misal : Dicari nilai 7 Data : {1,5,7,9,10, 12,17} 1 5 7 9 10 12 17 Akhir Titik Tengah = 7 ? Ya Awal Ketemu ! KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Binary Search Misal : Dicari nilai 11 Data : {1,5,7,9,10, 12,17} 1 5 7 9 10 12 17 Awal Titik Tengah Awal Akhir = 11 ? Titik Tengah = 11 ? TTengah <11 TTengah > 11 Cari di sisi kanan Cari di sisi kiri KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Binary Search Misal : Dicari nilai 7 Data : {1,5,7,9,10, 12,17} 1 5 7 9 10 12 17 Titik Tengah Awal = 11 ? Tidak Akhir Tidak Ketemu ! KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Kasus Algoritma akan menghasilkan sebuah variabel Found , yang berharga true jika X ada dalam tabel, false jika tidak. Selain itu, harga indeks indeks dimana X diketemukan pertama kalinya juga disimpan. Pencarian segera dihentikan begitu harga pertama diketemukan KUG1A3 Algoritma & Pemrograman
Solusi 1 : dengan Boolean Procedure BinSearc1(Input X: integer, N : integer; Output IX : integer, Found:boolean) Kamus Awal, Akhir, Tengah : integer Algoritma Awal 1; Akhir N ; Found False While Awal ≤ Akhir and not Found do Tengah (Awal+Akhir) div 2 depend on TabInt, Tengah, X X = TabIntTengah : Found true X < TabIntTengah : Akhir Tengah - 1 X > TabIntTengah : Awal Tengah +1 if Found then IX Tengah else IX 0 Hanya dapat dipergunakan untuk data terurut membesar KUG1A3 Algoritma & Pemrograman
Solusi 1 : Pengulangan dengan Boolean Semua pemeriksaan dilakukan dengan cara yang sama di dalam badan pengulangan. Algoritma tersebut berlaku untuk elemen tabel yang terurut membesar, dan harus dimodifikasi untuk elemen tabel yang terurut mengecil. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Solusi 2 : Tanpa Boolean Procedure BinSearc2(Input X: integer, N : integer; Output IX : integer, Found:boolean) Kamus Awal, Akhir, Tengah : integer Algoritma Awal 1; Akhir N ; Found False Tengah (Awal+Akhir) div 2 While (Awal < Akhir) and X TabIntTengah do depend on TabInt, Tengah, X X < TabIntTengah : Akhir Tengah - 1 X > TabIntTengah : Awal Tengah + 1 Tengah (Awal + Akhir ) div 2 Found (X = TabIntTengah) { if Found then…} Hanya dapat dipergunakan untuk data terurut membesar KUG1A3 Algoritma & Pemrograman 11
Solusi 2 : Pengulangan tanpa Boolean Pemeriksaan elemen terakhir dilakukan secara khusus di luar badan pengulangan. Perhatikan bagaimana indeks Tengah didefinisikan. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Contoh soal : UAS-SP06 Dengan menggunakan skema pencarian biner, jika diketahui data array yang akan dicari sebagai berikut : data = [ 2, 3, 9, 17, 18, 24, 36, 39, 42, 54, 60, 65, 79, 82, 94, 108] Jika nilai yang akan dicari adalah 42, maka pada langkah pencarian ke-3, nilai elemen batas awal dan batas akhir adalah : KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan 2. UAS-0506 Dengan menggunakan skema pencarian biner, jika diketahui data array yang akan dicari sebagai berikut : data = [ 12, 15, 29, 37, 48, 54, 76, 89, 92] Nilai X yang akan dicari adalah 89 Maka pada akhir pencarian, nilai elemen batas awal dan batas akhir adalah: KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman PENGURUTAN ( SORTING) Merupakan suatu proses untuk mengatur posisi suatu data agar terurut Algoritma yang dibahas : Counting Sort Bubble Sort Insertion Sort Selection Sort KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman COUNTING SORT Merupakan metode pengurutan paling sederhana Syarat : Data merupakan bilangan bulat yang bernilai lebih besar atau sama dengan nol. Range data diketahui. Misal : Data ={1,4,3,4,5,4,5,5,4} Range : dari 1 sampai 5, semua integer KUG1A3 Algoritma & Pemrograman
CARA KERJA COUNTING SORT Buat array penghitung dengan domain array sama dengan range nilai pada data Cacah tiap elemen data ke elemen penghitung, dengan cara : ‘Masukkan’ nilai data ke elemen penghiutng yang nilai indeks = nilai data Ulang sampai semua data terhitung Buat array data dari array penghitung dengan mulai dari indeks terkecil sesuai dengan nilai array penghitung. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Data ={ 1, 4, 3, 4, 5, 4, 5, 5, 4 } Buat array penghitung dengan domain array sama dengan range nilai pada data Hit : array[1..5] of integer Ada 5 elemen penghitung 1 2 3 4 5 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Cacah tiap elemen data ke elemen penghitung, dengan cara : ‘Masukkan’ nilai data ke elemen penghiutung yang nilai indeks = nilai data Data ={ 1, 4, 3, 4, 5, 4, 5, 5, 4 } 1 1 2 1 3 1 3 2 4 4 2 1 3 5 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman ILUSTRASI Buat array data dari array penghitung dengan mulai dari indeks terkecil sesuai dengan nilai array penghitung. 1 1 Data1 =1 { Tidak ada nilai 2 } 2 Data2 =3 1 3 4 Data3=4,Data4=4,Data5=4, Data6=4 4 3 Data7=5,Data8=5,Data9=5 5 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Counting Sort Procedure CountSort(Input N,Min,Max : integer) { Mengurutkan dg counting sort } Kamus Hit : array [Min..Max] of integer; i,k : integer Algoritma { Inisialisasi array Hit ke 0 } i traversal [Min..Max] Hiti 0 { Mencacah nilai array Data } i traversal [1..N] Hit Hit + 1 Hanya dapat dipergunakan untuk data terurut membesar Datai Datai KUG1A3 Algoritma & Pemrograman 21
KUG1A3 Algoritma & Pemrograman Counting Sort Algoritma ( lanj.) { Membentuk kembali array Data } k 0 i traversal [Min..Max] if Hiti 0 then repeat Hiti times k k+1 Datak i Hanya dapat dipergunakan untuk data terurut membesar KUG1A3 Algoritma & Pemrograman 22
KUG1A3 Algoritma & Pemrograman CATATAN COUNTING SORT Perhatikan cara mencacah Data : Hit + 1 Hit Datai Datai Indeks dari Hit adalah Datai KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Contoh. UAS0506 Pengurutan menaik (ascending ) menggunakan counting sort , dengan array data adalah Data, 2 3 5 6 5 6 2 dan array penghitung adalah Hit, maka : A. Deklarasi array dari hit adalah : Hit : array[1..6] of integer B. Isi Hit pada pass kedua adalah : {1,1,0,0,0,0,1} C. Index Hit minimal adalah 2 dan maksimal adalah 6. D. Isi Hit setelah pass terakhir adalah : {2,1,0,2,2,0,0} E. Susunan akhir Data adalah : {2,2,3,0,5,5,6,6} KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman LATIHAN Buat prosedur Pascal untuk mencari nilai X pada suatu elemen terurut dg binary search. Untuk tiap tahap pencarian ( pass ), munculkan Awal, Akhir dan Titik Tengah. Buat prosedur untuk mengurutkan array Y ( 10 elemen ) dg counting search. Program utama : Masukkan 10 nilai : 90,3,7,30,40,70,40,60,2, 10 Urutkan dg counting sort Cari nilai 40, pd posisi berapa ? Cari nilai 100 ! KUG1A3 Algoritma & Pemrograman