Oleh :
Kelas: MI -2C
Nim : 2005102075
Pendahuluan
Salam Sejaterah bagi kita semua, pertama-tama marilah kita ucapkan puji syurkur kepada
Tuhan YME, karena rahmat nya saya masih dapat menyelesaikan tugas makalah ini sampai
selesai, pada Makalah saya kali ini yang membahas tentang InterpolationSearch ini dimana
saya akan menjabarkan apa itu teori atau pengertian dari Interpolation itu sendiri, yang mana
saya juga berharap dapat memberikan contoh contoh yang tepat dari makalah interpolation itu
juga secara bemar dan juga tepat.
Daftar Isi
I. Pendahuluan
III. Pengertian
IV. Penutup
A) Kritik dan Saran
Rumusan Masalah
Pengertian
A) Teori Interpolation Search
didapat. Jika nilai key lebih dekat ke array yang terakhir, maka
yang terakhir.
Misalkan
Misalkan kita memiliki int arr[] = {70, 60, 30, 50, 40,20}, data para int arr harus
Sehingga array kita akan menjadi int arr[] = {20,30,40,50,60,70}. Apabila angka
InterpolationSearch:
1st Cycle:
(20,30,40,50,60,70)
find=40
low = 0
high = N-1
(arr[mid] == 40)
(20,30,40,50,60,70)
(20==40) // FALSE
low = mid + 1
2nd Cycle:
(20,30,40,50,60,70)
find=40
(arr[mid] == 40)
(20,30,40,50,60,70)
(30==40) // FALSE
low = mid + 1
3rd Cycle:
(20,30,40,50,60,70)
Pada cycle ke 3, looping ini sudah berhenti karena melanggar aturan yang dibuat
untuk interpolation search. Pada tahap ini ada kemungkinan data nya sudah
ditemukan. Kita tinggal mengcheck apakah array bagian low atau high
merupakan nilai yang kita cari atau bukan. Jika data ditemukan, maka program
akan keluar dari looping. Jika kita ingin menampilkan index dari data yang dicari,
kita tinggal menyimpan index dari array tersebut dan menampilkan nya.
C:
#include <stdio.h>
int main()
{
int arr[]={20, 30, 40, 50, 60, 70};
int n = sizeof(arr)/sizeof(int);
int index=-1; //index array mulai dari 0, maka di set -1
int find=40;
int mid, low = 0, high = n-1;
while(arr[low] < find && arr[high] > find) {
mid = ((find – arr[low]) / (arr[high] – arr[low])) * (high-low) + low;
if(arr[mid] < find){
low = mid + 1;
}
else if(arr[mid] > find){
high = mid – 1;
}
else{
index=mid;
break;
}
}
if (arr[low] == find){
index = low;
}
else if(arr[high] == find){
index = high;
}
if(index==-1){
printf(“Data tidak ditemukan\n”);
}
else{
printf(“Data berada pada index ke-%d\n”,index);
}
return 0;
}
Prosesnya
data ke 1 = 1 ==>A[i]==>A[0]
data ke 2 = 2 ==>A[i]==>A[1]
data ke 3 = 3 ==>A[i]==>A[2]
data ke 4 = 4 ==>A[i]==>A[3]
data ke 5 = 5 ==>A[i]==>A[4]
A[i]
Masukkan data: 4
k=4
j=0
for i=0;i<5;i++
1. i=0
jika A[i]==k
jika A[0]==k
2. i=1
jika A[i]==k
jika A[1]==k
3. i=2
jika A[i]==k
jika A[2]==k
4. i=3
jika A[i]==k
jika A[3]==k
maka, A[j]=i;
j++;
j=j+1
j=1;
//data ditemukan
jika j>0
jika 1>0
i=1
5. i=4
jika A[i]==k
jika A[4]==k
Outputnya:
data ke 1 = 1
data ke 2 = 2
data ke 3 = 3
data ke 4 = 4
data ke 5 = 5
Masukkan data: 4
Penutup
A) Kritik dan Saran
Demikian hasil dari makalah saya jika ada krtik atau saran dari ibu saya
seribu salah . Oleh karena itu saya mohon terhadap kritik dan sarannya
ucapkan yang mungkin tidak berkenan bagi ibu dosen saya minta maaf
bu, oleh karena itu saya mohon pengertian nya dari ibu atas makalah
saya ini agar dapat di koreksi agar menjadi semakin baik lagi kedepannya
bu. Demikian syaa sampaikan hasil makalh saya ini kepada ibu saya
ucapkan terimakasih.