Algoritma
Interpolation Search
1. Mulai
2. Memasukan indeks
3. Mencari data menggunakan keyword
4. Posisi = ((cari_data - data[awal])*(akhir-awal)+awal)
/ (data[akhir]-data[awal])
5. Jika sama dengan keyword yang
dimasukan program selesai
jika tidak bandingkan
dengan (data[posisi] < cari_data) awal = posisi + 1
6. Ulangi langkah 4&5 sampai
hasilnya sama keyword
7.
Jika data[posisi] > cari_data,
data tidak ditemukan program selesai
8.
Selesai.
Flowchart
CODE INTERPOLATION SEARCH
#include <iomanip>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int data[50];
int n,cari_data, posisi, awal,
akhir, proses;
bool berhenti = false;
cout << " I N T E R
P O L A T I O N S E A R C H ";
cout<<endl;
cout<<"Input Data
(maks.50) : "; cin>>n; cout<<endl;
for(int i=0; i<n; i++)
{
cout<<"Data
ke "<<i+1<<": "; cin>>data[i];
}
cout<<"\nData :
";
for(int i = 0;i<n; i++)
cout<<setw(3)<<data[i];
cout<<endl<<endl;
cout << "Data yang
dicari : ";
cin >> cari_data;
awal = 0;
akhir = n;
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
pencarian 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;
}
Output code