Page 255 - MODUL ALGORTIMA DAN PEMROGRAMAN
P. 255

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;
                      } else if (array[mid] < dataDicari) {
                        low = mid + 1;
                      } else {
                        high = mid - 1;
                      }
                    }

                    return -1; // Nilai tidak ditemukan
                  }

                  int main() {
                    int n; // Jumlah elemen array
                    int dataDicari; // Nilai yang ingin dicari

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

                    // Deklarasi dan inisialisasi array
                    int array[n];
                    cout << "Masukkan nilai-nilai array (pastikan terurut): " << endl;
                    for (int i = 0; i < n; i++) {
                      cin >> array[i];
                    }

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

                    // Mencari data menggunakan interpolation search
                    int indeks = interpolationSearch(array, n, dataDicari);

                    // Menampilkan hasil pencarian
                    if (indeks == -1) {
                      cout << "Data " << dataDicari << " tidak ditemukan dalam array." <<
                  endl;
                    } else {
                      cout << "Data " << dataDicari << " ditemukan pada indeks ke-" <<
                  indeks << endl;
                    }

                    return 0;
                  }



                                                                                                         232
   250   251   252   253   254   255   256   257   258   259   260