0% menganggap dokumen ini bermanfaat (0 suara)
79 tayangan17 halaman

Pertemuan 13 - Searching

Dokumen tersebut membahas dua metode searching yaitu sequential search dan binary search. Sequential search melakukan pencarian secara berurutan dari elemen pertama hingga terakhir. Binary search membagi data menjadi dua bagian sebelum memeriksa bagian tengah untuk menentukan area pencarian selanjutnya. Dokumen ini juga menjelaskan algoritma dan contoh kasus dari kedua metode tersebut.

Diunggah oleh

Ikhsan Anugerah
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
79 tayangan17 halaman

Pertemuan 13 - Searching

Dokumen tersebut membahas dua metode searching yaitu sequential search dan binary search. Sequential search melakukan pencarian secara berurutan dari elemen pertama hingga terakhir. Binary search membagi data menjadi dua bagian sebelum memeriksa bagian tengah untuk menentukan area pencarian selanjutnya. Dokumen ini juga menjelaskan algoritma dan contoh kasus dari kedua metode tersebut.

Diunggah oleh

Ikhsan Anugerah
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

Algoritma dan Pemrograman Searching

Tim Algoritma dan Pemrograman Universitas Komputer Indonesia

Metode Searching 1. Sequential Search 2. Binary Search

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 Dengan Boolean

Sequential Search Tanpa Boolean


Mis. diberikan data sebagai berikut: Angka 5
1

1
2

9
3

4
4

2
5

Data 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 SeqSearchTanpaSentinel(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) i1 while(nama_array (i) data_cari) and (i < maks_array) do ii+1 endwhile if (nama_array(i) = data_cari) then output(data_cari, ditemukan pada indeks ke-,i) else output(data_cari, tidak ditemukan) endif EndProcedure

Sequential Search Dengan Sentinel


sentinel Mis. diberikan data sebagai berikut: Angka 5
1

1
2

9
3

4
4

2
5

9
6

Data 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 SeqSearchSentinel(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) i1 nama_array(maks_array + 1) data_cari while (nama_array (i) data_cari) do ii+1 endwhile if (i < maks_array+1) then output(data_cari, ditemukan pada indeks ke-,i) else output(data_cari, tidak ditemukan) endif EndProcedure

Sequential Search Dengan Boolean


Mis. diberikan data sebagai berikut:
Angka
5
1

1
2

9
3

4
4

2
5

Data 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 seq_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) i1 ketemu false while (not ketemu) and (i maks_array) do if (nama_var_array(i) = data_cari) then ketemu true else ii+1 endif endwhile if (ketemu) then output(data_cari, ditemukan pada indeks ke-,i) else output(data_cari, tidak ditemukan) endif EndProcedure

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
1

7
2

12
3

15
4

29
5

Data yang dicari : 7 Catatan : data harus sudah terurut

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 1 7 2 12 3 15 4 29 5

Ia
Bag. Kiri

Ib Bag. Kanan

Binary Search (lanjutan)


Langkah 2 : periksa data di posisi tengah larik (12), lalu bandingkan apakah sama atau tidak(12 = 7? F), karena tidak sama maka akan diperiksa apakah data di posisi tengah lebih kecil dari data yang dicari (12 < 7 ? F) karena lebih besar maka pencarian dilanjutkan ke bagian kiri dengan cara menarik Indeks bawah ke kiri (Ib = k 1)

3
1

7
2

Ia

Ib

Hitung kembali titik tengah dari Larik yang ditinjau (didapat k = 1)

Binary Search (lanjutan)


3
1

7
2

Ia Ib k Bag. Kiri Bag. Kanan


Langkah 3 : ulangi langkah 1 s/d langkah 2 sampai data ditemukan atau sampai harga Ia > Ib Angka 7 ditemukan pada indeks ke-2, dan pada looping ke-3

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_var_array(k) = data_cari) then ketemu true else if (nama_var_array(k) < data_cari) then Ia k + 1 else Ib k 1 endif endif endwhile if (ketemu) then output(data_cari, ditemukan pada indeks ke-,k) else output(data_cari, tidak ditemukan) endif EndProcedure

TUGAS BESAR (1)


Buat 8 kelompok dengan 8 topik berbeda: 1. Reservasi Hotel 2. Rental Kendaraan 3. Peminjaman Buku (Perpustakaan) 4. Rental VCD 5. Pasien Rawat Inap 6. Parkir 7. Koperasi 8. Penggajian

TUGAS BESAR (2)


Dikumpulkan Algoritma, Program dan Layar Tampilan, dengan Menu sebagai berikut:

MENU PILIHAN
1. 2. 3. 4. 5. ISI DATA CARI DATA BERDASARKAN KODE CARI DATA BERDASARKAN NAMA CARI DATA BERDASARKAN HARGA TAMPIL DATA KESELURUHAN YG SDH TERURUT 0. KELUAR Catatan: Dikumpulkan ketika UAS!

Anda mungkin juga menyukai