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