Page 239 - MODUL ALGORTIMA DAN PEMROGRAMAN
P. 239

int main() {
                    // Daftar angka yang sudah diurutkan
                    int arr[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,
                  59, 61, 67, 71, 73, 79, 83, 89, 97};
                    int n = sizeof(arr) / sizeof(arr[0]); // Hitung jumlah elemen array

                    // Kasus 1: Cari angka 67
                    int target = 67;
                    int indeks = binarySearch(arr, n, target);
                    if (indeks != -1) {
                      cout << "Angka " << target << " ditemukan pada indeks ke-" << indeks
                  << endl;
                    } else {
                      cout << "Angka " << target << " tidak ditemukan dalam daftar." <<
                  endl;
                    }

                    // Kasus 2: Cari angka 50
                    target = 50;
                    indeks = binarySearch(arr, n, target);
                    if (indeks != -1) {
                      cout << "Angka " << target << " ditemukan pada indeks ke-" << indeks
                  << endl;
                    } else {
                      cout << "Angka " << target << " tidak ditemukan dalam daftar." <<
                  endl;
                    }

                    return 0;
                  }

                  Output:
                  Angka 67 ditemukan pada indeks ke-18
                  Angka 50 tidak ditemukan dalam daftar.


                  Penjelasan:
                  1)  Fungsi binarySearch:
                      •  Menerima 3 parameter:
                          o  arr: Daftar angka yang diurutkan (array of integers).
                          o  n: Jumlah elemen dalam daftar (integer).
                          o  target: Angka yang ingin dicari (integer).
                      •  Mengembalikan nilai integer:
                          o  Indeks angka yang dicari jika ditemukan.
                          o  Nilai -1 jika angka tidak ditemukan.
                      •  Melakukan pencarian menggunakan loop while dengan kondisi low <= high.
                          o  low dan high mewakili indeks awal dan akhir dari bagian daftar yang sedang dicari.
                      •  Pada setiap iterasi loop:
                          o  Hitung mid sebagai indeks tengah antara low dan high.
                          o  Bandingkan arr[mid] dengan target:
                              ▪  Jika sama, kembalikan mid sebagai indeks yang ditemukan.
                              ▪  Jika arr[mid] < target, perbarui low menjadi mid + 1 untuk mencari di bagian kanan
                                  daftar.


                                                                                                         230
   234   235   236   237   238   239   240   241   242   243   244