Program Interpolation Search :
#include<iostream>
using namespace std;
int main()
{
//deklarasi variabel
int A[4],i,j,k,tkr,low,high,pos,tm;
//proses penginputan data
for(i=0;i<4;i++)
{
printf("data ke - %d : ",i+1);
scanf("%d",&A[i]);
}
//input data yang akan dicari
printf("Masukkan data yang akan anda cari : ");
scanf("%d",&k);
//proses pengurutan data
for(i=0;i<4;i++)
{
for (j=i+1;j<4;j++)
{
if (A[i]>A[j])
{
tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
//proses pencarian data
tm=0;
high=3;
low=0;
do
{
pos = ((k-A[low])/ (A[high] - A[low]))*(high-low) + low;
if (A[pos] == k )
{
tm++;
break;
}
if (A[pos] < k)
high = pos -1 ;
else
if (A[pos] < k )
low = pos + 1 ;
}
while (k >= A[low] && k <= A[high]);
if (tm>0)
{
printf("Data %d yang dicari ada dalam array\n",k);
}
//jika tidak ditemukan
else
{
printf("data tidak ditemukan dalam array\n");
}
Output :
Penjelasan :
A[I] = [2 5 3 8 ]
//proses penginputan data
for(i=0;i<4;i++)
selama I=0i<4benar
maka data ke 1 cetak 2
i++
i=1
for(i=0;i<4;i++)
selama i=1i<4benar
maka data ke 2 cetak 5
i++
i=2
for(i=2;i<4;j++)
selama i=2i<4benar
maka data ke 3 cetak 3
i++
i=3
for(i=3;i<4;j++)
selama i=2i<4benar
maka data ke 4 cetak 8
i++
i=4
for(i=0;i<4;j++)
selama i=4i<4salah
maka selesai
//proses pengurutan data [2,5,3,8]
Iterasi 1
For(i=0;i<4;i++)
Selama i=0
0<4benar
Sub Iterasi 1.1
For(j=i+1;j<4;j++)
Selama j=0+1j=1
1<4benar
Sub Iterasi 1.2
If(A[i]>A[j])
Jika (A[i]>A[j])
Jika 2>5 salah
J++
J=2
2<4 benar
If(A[i]>A[j])
If(A[i]>A[2])
Jika 2>3 salah
J++
J=3
3<4 benar
If(A[i]>A[j])
If(A[i]>A[3])
Jika 2>8 salah
J++
J=4
4<4 =salah
//iterasi 2
I=1
J=4
I<4 benar
//sub iterasi 2.1
For(j=i+1;j<4++)
Selama j=1+1 ; j=2
2<4 benar
//sub iterasi 2.2
If(A[i]>A[j])
Jika A[i]>A[j]
Jika 5>3 benar
//sub iterasi 2.3
Tkr=A[i]tkr=A[1]tkr=5
A[1]=A[2]A[1]=3
A[2]=tkrA[2]=5
Maka Sekarang urutannya berubah menjadi A[i] = [2,5,3,8];
0123
//iterasi 3
I=2
I<4
2<4 benar
//sub iterasi 3.1
For(j=i+1;j<4;j++)
Selama j=2+1;j=3
3<4benar
//sub iterasi 3.2
If (A[i]>A[j])
Jika A[2] >[3]
Jika 5>8 salah
J++
J=4
4<4 salah
//iterasi 4 A[i] = [2,3,5,8]
0123
I=3
J=4
3<4 benar
//sub iterasi 4.1
For(j=i+1;j<4;j++)
Selama (j=3+1 ; j=3
4<4 salah
//iterasi 5
J=4
I<4
4<4 salah
Data sebelumnya A[i] = [2,5,3,8]
Data sekarang A[i] = [2,3,5,8]
//pencarian data
tm=0;
high=3;
low=0;
pos=((k-A[low])/)A[high]=A[low]))*(high-low)+low
pos=((8-2/8-2))*3+0
pos=3
maka nilai 8 telah ditemukan pada indeks ke 3