pencarian interpolasi



Algoritma Pencarian Interpolasi

1.       Mulai.
2.       Menentukan index dan isi dari index tersebut .

0              1              2             3             4             5             6             7             8             9             index
10           20           30           40           50           60           70           80           90           100         value

3.       Menentukan keyword yang akan dicari.

Keyword = 50
Keyword = 25

4.       Memasukkanya pada rumus Interpolasi.


5.       Jika hasilnya benar sesuai dengan perhitungan menggunakan rumus interpolasi maka pencarian akan berhenti karena keyword telah ditemukan tetapi jika hasil berbeda dengan posisi yang ada pada rumus maka data tersebut tidak ditemukan pada data yang ada.

Posisi atau index ke 4 memiliki value 50, berarti keyword yang di cari di temukan di index    ke – 4 yang terdapat dalam data.

Posisi atau index ke 2 memiliki value 20 sedangkan keyword yang di cari adalah 25 maka, keyword 25 tidak terdapat dalam data yang ada.

6.       Selesai.





Flowchart Pencarian Interpolasi





Contoh Ptogram 

 Code

#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;

int main ()
{
    int data[100];
    int cari_data, posisi, awal, akhir, proses,n;
    bool berhenti = false;

    cout<<"\t\t\t\tPENCARIAN INTERPOLASI"<<endl<<endl;
    cout<<"Masukan Jumlah Data : "; cin>>n; cout<<endl;
    for(int x=0; x<n; x++)
        {cout<<"Data ke-"<<x+1<<": \t"; cin>>data[x];}
    cout<<"Data awal: ";
    for(int x = 0; x<n; x++)
    cout<<setw(3)<<data[x];
    cout<<endl<<endl;
    cout<<"Data yang di cari : "; 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 indexs ke- "<<posisi<<endl;
                    cout<<"*data yang di cari di mulai dari index ke 0*"<<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 !!!"; berhenti=true;
                }
        }
    return 0;
}



Hasil




Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

1 comments: