Anda di halaman 1dari 2

Nama: Louisa V.

F Ngantung NIM: 12310571 Kelas: PTIK kelas E STRUKTUR DATA

INTERPOLATION SEARCH
Interpolation Search adalah algoritma pencarian yang lebih efisien daripada algoritma Binary dan Sequential Search. Hal ini dikarenakan algoritma ini tidak perlu menjelajahi setiap elemen dari tabel. Kerugiannya adalah algoritma ini hanya bisa digunakan pada tabel yang elemennya sudah terurut baik menaik maupun menurun. Sama seperti Binary, teknik ini hanya dapat dilakukan pada list yang telah terurut dan berada pada struktur array dan data yang dicari diperkirakan ada di dalam list. Interpolation Search adalah sebuah algoritma atau metode untuk mencari nilai key yang diberikan dalam array diindeks yang telah diperintahkan oleh nilai nilai kunci. Teknik searching ini dilakukan dengan perkiraan letak data. Contoh ilustrasi: jika kita hendak mencari suatu kata di dalam kamus telepon, misal yang berawalan dengan huruf J, maka kita tidak akan mencarinya dari awal buku, tapi kita langsung membukanya pada 1/3 atau 1/4 dari tebal kamus.

Jika data[posisi] > data yg dicari, high = pos 1 Jika data[posisi] < data yg dicari, high = pos + 1 Algoritma Interpolation Search
1. awal <- 0 2. akhir <- banyakDataArray-1 3. cari_data ? (input bilangan) 4. posisi = ((cari_data - data[awal])*(akhir-awal)+awal)/(data[akhir]data[awal]) 5. cari_data == data[posisi] ? 6. Jika sama, data telah ditemukan dan program selesai 7. Jika tidak, Bandingkan : JIKA (data[posisi] < cari_data) awal = posisi + 1; 8. lakukan langkah 4,5 9. Jika data[posisi] > cari_data, tampilkan data tidak ditemukan, program selesai

contoh coding program interpolation search c++ sederhana #include <iostream> #include <cstdlib> using namespace std; int main() { int data[5] = {2,5,8,11,16}; int cari_data, posisi, awal, akhir, proses; bool berhenti = false; cout << "Data Yang ingin dicari : "; cin >> cari_data; awal = 0; akhir = 4; proses = 0; while(berhenti != true) { proses++; posisi = (((cari_data-data[awal])*(akhir-awal))/(data[akhir]-data[awal])+awal); if(data[posisi] == cari_data) { cout << "Data " << cari_data << " pada posisi " << posisi <<endl; cout << "Proses pencaharian sebanyak " << proses <<endl; berhenti = true; } else if(data[posisi] < cari_data) { awal = posisi + 1; } else { cout << "Data " << cari_data << " Tidak ditemukan.\n"; berhenti = true; } } return 0; }

Anda mungkin juga menyukai