Page 253 - MODUL ALGORTIMA DAN PEMROGRAMAN
P. 253

•  Kondisi loop:
                          o  data[i] != cari: Berhenti jika nilai yang dicari ditemukan.

                          o  i < n: Berhenti jika seluruh elemen array telah diperiksa (termasuk sentinel).

                      •  Jika nilai cari ditemukan, indeksnya (i - 1) akan dihitung dan disimpan.
                  5)  Menampilkan hasil pencarian:

                      •  Jika nilai cari ditemukan, program akan mencetak pesan bahwa data ditemukan pada

                         indeks tertentu.
                      •  Jika tidak ditemukan, program akan mencetak pesan bahwa data tidak ditemukan dalam

                         array.

                  3.  Program
                  #include <iostream>
                  #include <algorithm> // Untuk fungsi sort()
                  using namespace std;

                  int main() {
                    // Deklarasi variabel
                    int n; // Jumlah elemen array
                    int data[100]; // Array untuk menyimpan data
                    int cari; // Nilai yang ingin dicari

                    // Meminta input jumlah elemen array
                    cout << "Masukkan jumlah elemen array: ";
                    cin >> n;

                    // Meminta input nilai-nilai dalam array
                    for (int i = 0; i < n; i++) {
                      cout << "Masukkan nilai elemen ke-" << i + 1 << ": ";
                      cin >> data[i];
                    }

                    // Meminta input nilai yang ingin dicari
                    cout << "Masukkan nilai yang ingin dicari: ";
                    cin >> cari;

                    // Mengurutkan array (penting untuk binary search)
                    sort(data, data + n);

                    // Melakukan pencarian binary search
                    int low = 0;
                    int high = n - 1;
                    int mid;
                    bool ditemukan = false;

                    while (low <= high && !ditemukan) {
                      mid = (low + high) / 2;
                      if (data[mid] == cari) {
                        ditemukan = true;
                      } else if (data[mid] < cari) {
                        low = mid + 1;
                      } else {
                        high = mid - 1;
                      }
                    }
                                                                                                         230
                      // Menampilkan hasil pencarian
                    if (ditemukan) {
                      cout << "Data " << cari << " ditemukan pada indeks ke-" << mid <<
                  endl;
                    } else {
   248   249   250   251   252   253   254   255   256   257   258