Algoritma dan Pemrograman Searching Tim Algoritma dan Pemrograman

  • Slides: 16
Download presentation
Algoritma dan Pemrograman Searching Tim Algoritma dan Pemrograman Universitas Komputer Indonesia

Algoritma dan Pemrograman Searching Tim Algoritma dan Pemrograman Universitas Komputer Indonesia

Metode Searching 1. Sequential Search 2. Binary Search

Metode Searching 1. Sequential Search 2. Binary Search

Definisi Sequential Search Proses menemukan data dari array yang ditinjau dengan cara menelusuri satu

Definisi Sequential Search Proses menemukan data dari array yang ditinjau dengan cara menelusuri satu persatu elemen array mulai dari elemen array pertama sampai data yang dicari ditemukan atau sampai seluruh elemen array ditelusuri

Sequential Search a. Sequential Search Tanpa Boolean - Tanpa Sentinel - Dengan Sentinel b.

Sequential Search a. Sequential Search Tanpa Boolean - Tanpa Sentinel - Dengan Sentinel b. Sequential Search Dengan Boolean

Sequential Search Tanpa Boolean Mis. diberikan data sebagai berikut: Angka 5 1 9 4

Sequential Search Tanpa Boolean Mis. diberikan data sebagai berikut: Angka 5 1 9 4 2 1 2 3 4 5 Angka yang dicari : 9 - Angka(1) = 9? F - Angka(2) = 9? F - Angka(3) = 9? T Maka data yang dicari ditemukan pada indeks ke-3

Algoritma Sequential Search Tanpa Sentinel Procedure Sequential. Search. Tanpa. Sentinel(Input Nama. Array : Tipe.

Algoritma Sequential Search Tanpa Sentinel Procedure Sequential. Search. Tanpa. Sentinel(Input Nama. Array : Tipe. Array) {I. S. : elemen array [1. . Maks. Array] sudah terdefinisi} {F. S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer Data. Cari : tipedata Algoritma: Input(Data. Cari) i 1 While (Nama. Array (i) ≠ Data. Cari) and (i < Maks. Array) do i i+1 End. While If (Nama. Array(i) = Data. Cari) Then Output(Data. Cari, ’ ditemukan pada indeks ke-’, i) Else Output(Data. Cari, ’ tidak ditemukan’) End. If End. Procedure

Sequential Search Dengan Sentinel Mis. diberikan data sebagai berikut: Angka sentinel 5 1 9

Sequential Search Dengan Sentinel Mis. diberikan data sebagai berikut: Angka sentinel 5 1 9 4 2 9 1 2 3 4 5 6 Angka yang dicari : 9 - Tempatkan data yang dicari pada sentinel - Telusuri array seperti sequential search tanpa sentinel, jika data ditemukan pada sentinel, maka data yang dicari tidak ada/tidak ditemukan, tapi jika data yang dicari ditemukan bukan pada sentinel, maka data yang dicari ditemukan.

Algoritma Sequential Search Dengan Sentinel Procedure Sequential. Search. Sentinel(Input Nama. Array : Tipe. Array)

Algoritma Sequential Search Dengan Sentinel Procedure Sequential. Search. Sentinel(Input Nama. Array : Tipe. Array) {I. S. : elemen array [1. . Maks. Array] sudah terdefinisi} {F. S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer Data. Cari : tipedata Algoritma: Input(Data. Cari) {data yang dicari} i 1 Nama. Array(Maks. Array + 1) Data. Cari {data sentinel} While (Nama. Array (i) ≠ Data. Cari) do i i+1 End. While If (i < Maks. Array + 1) Then Output(Data. Cari, ’ ditemukan pada indeks ke-’, i) Else Output(Data. Cari, ’ tidak ditemukan’) End. If End. Procedure

Sequential Search Dengan Boolean Mis. diberikan data sebagai berikut: Angka 5 1 9 4

Sequential Search Dengan Boolean Mis. diberikan data sebagai berikut: Angka 5 1 9 4 2 1 2 3 4 5 Angka yang dicari : 9 Proses pencariannya sama seperti proses pencarian pada metode sequential search lainnya, hanya saja melibatkan sebuah variabel lain yg bertipe boolean.

Algoritma Sequential Search Dengan Boolean Procedure Sequential. Search. Boolean (Input Nama. Array : Tipe.

Algoritma Sequential Search Dengan Boolean Procedure Sequential. Search. Boolean (Input Nama. Array : Tipe. Array) {I. S. : elemen array [1. . Maks. Array] sudah terdefinisi} {F. S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer Ketemu : boolean Data. Cari : tipedata Algoritma: Input(Data. Cari) i 1 Ketemu false While (Not Ketemu) and (i ≤ Maks. Array) do If (Nama. Array(i) = Data. Cari) Then Ketemu true Else i i+1 End. If End. While If (Ketemu) Then Output(Data. Cari, ’ ditemukan pada indeks ke-’, i) Else Output(Data. Cari, ’ tidak ditemukan’) End. If End. Procedure

Binary Search Proses pencarian dengan cara membagi larik menjadi 2 bagian (bagian kiri dan

Binary Search Proses pencarian dengan cara membagi larik menjadi 2 bagian (bagian kiri dan bagian kanan), dan mengecek data diposisi tengah apakah sama atau tidak dengan data yg dicari, jika tidak proses pencarian akan dilanjutkan ke larik bagian kiri atau bagian kanan. Mis. diberikan data sebagai berikut: Angka 3 7 12 15 29 1 2 3 4 5 Angka yang dicari : 7 Catatan : data harus sudah terurut

Binary Search (lanjutan) Langkah 1 : bagi larik menjadi 2 bagian untuk mencari posisi

Binary Search (lanjutan) Langkah 1 : bagi larik menjadi 2 bagian untuk mencari posisi tengah (k) dengan cara indeks atas (Ia) dijumlahkan dengan indeks bawah (Ib) lalu dibagi 2. k = (Ia + Ib) div 2 = (1 + 5) div 2 =3 3 7 12 15 29 1 2 3 4 5 Ia k Bag. Kiri Ib Bag. Kanan

Binary Search (lanjutan) Langkah 2 : Periksa data di posisi tengah larik (12), lalu

Binary Search (lanjutan) Langkah 2 : Periksa data di posisi tengah larik (12), lalu bandingkan apakah sama atau tidak(12 = 7? F), kalau tidak sama maka akan diperiksa apakah data di posisi tengah lebih kecil dari data yang dicari (12 < 7 ? F) jika tidak maka pencarian dilanjutkan ke bagian kiri dengan cara menarik Indeks bawah ke kiri (Ib = k – 1) 3 7 1 2 Ia Ib Hitung kembali titik tengah dari Larik yang ditinjau (didapat k = 1)

Binary Search (lanjutan) 3 7 1 Ia 2 Ib k Bag. Kiri Bag. Kanan

Binary Search (lanjutan) 3 7 1 Ia 2 Ib k Bag. Kiri Bag. Kanan Langkah 3 : ulangi langkah 1 s/d langkah 2 sampai data ditemukan atau sampai harga Ia > Ib 7 2 Ib Ia k Angka 7 ditemukan pada indeks ke-2, dan pada looping ke-3

Illustrasi Binary Search Mis. Dicari angka 7 menggunakan Binary Search 3 7 12 15

Illustrasi Binary Search Mis. Dicari angka 7 menggunakan Binary Search 3 7 12 15 29 1 2 3 4 5 Ia Ia k k Ib Ib Ib Ia k - Angka 7 ditemukan pada indeks ke-2 - Data yang dicari ditemukan pada looping ke-3, dengan harga Ia = 2 dan Ib = 2

Algoritma Binary Search Procedure Binary. Search (Input Nama. Array : Tipe. Array) {I. S.

Algoritma Binary Search Procedure Binary. Search (Input Nama. Array : Tipe. Array) {I. S. : elemen array [1. . Maks. Array] yg terurut secara ascending sudah terdefinisi} {F. S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: Ia, Ib, k : integer {Ia=indeks bawah, Ib=indeks atas, k=posisi tengah} Ketemu : boolean Data. Cari : tipedata Algoritma: Input(Data. Cari) Ia 1 Ib Maks. Array Ketemu false While (Not Ketemu) and (Ia ≤ Ib) do k (Ia + Ib) div 2 If (Nama. Array(k) = Data. Cari) Then Ketemu true Else If (Nama. Array(k) < Data. Cari) Then Ia k + 1 Else Ib k – 1 End. If Endi. I End. While If (Ketemu) Then Output(Data. Cari, ’ ditemukan pada indeks ke-’, k) Else Output(Data. Cari, ’ tidak ditemukan’) End. If End. Procedure