Page 236 - MODUL ALGORTIMA DAN PEMROGRAMAN
P. 236

endl;
                    } else {
                      cout << "Data " << cari << " tidak ditemukan dalam array" << endl;
                    }

                    return 0;
                  }

                  Output:
                  Masukkan jumlah elemen array: 5
                  Masukkan nilai elemen ke-1: 1
                  Masukkan nilai elemen ke-2: 2
                  Masukkan nilai elemen ke-3: 3
                  Masukkan nilai elemen ke-4: 4
                  Masukkan nilai elemen ke-5: 5
                  Masukkan nilai yang ingin dicari: 3
                  Data 3 ditemukan pada indeks ke-2


                  Penjelasan:
                  1)  Mengurutkan array:
                      •  Fungsi  sort()  dari  library  <algorithm>  digunakan  untuk  mengurutkan  array  data  dalam
                         urutan menaik.
                      •  Hal ini penting karena binary search hanya bekerja pada array yang terurut.
                  2)  Melakukan pencarian binary search:
                      •  Algoritma binary search diimplementasikan menggunakan loop while.
                      •  Loop  ini  berulang  selama  nilai  cari  belum  ditemukan  dan  low  (indeks  awal)  tidak
                         melebihi high (indeks akhir).
                      •  Pada setiap iterasi:
                          o  Hitung nilai mid sebagai indeks tengah antara low dan high.
                          o  Bandingkan data[mid] dengan cari:
                              ▪  Jika sama, ditemukan diubah menjadi true dan indeks mid disimpan.
                              ▪  Jika data[mid] lebih kecil dari cari, low diperbarui menjadi mid + 1.
                              ▪  Jika data[mid] lebih besar dari cari, high diperbarui menjadi mid - 1.
                  3)  Menampilkan hasil pencarian:
                      •  Jika ditemukan bernilai true, program akan mencetak pesan bahwa data ditemukan pada
                         indeks tertentu.
                      •  Jika tidak ditemukan, program akan mencetak pesan bahwa data tidak ditemukan dalam
                         array.

                  4.  Program
                  #include <iostream>
                  using namespace std;

                  int interpolationSearch(int array[], int n, int dataDicari) {
                    int low = 0;
                    int high = n - 1;

                    while (low <= high) {
                      int mid = low + ((dataDicari - array[low]) * (high - low)) /
                  (array[high] - array[low]);

                      if (array[mid] == dataDicari) {
                        return mid;                                                                      227
                        } else if (array[mid] < dataDicari) {
                        low = mid + 1;
                      } else {
                        high = mid - 1;
                      }
   231   232   233   234   235   236   237   238   239   240   241