Langsung ke konten utama

Interpolation search

- INTERPOLATION SEARCH -

 Proses pencarian interpolasi (interpolation search) hampir sama dengan proses pencarian dbinary search, dimana pencarian juga dilakukan pada kumpulan data yang sudah urut. Akan tetapi jika pada binary search data dibagi menjadi dua bagian tiap prosesnya. Contoh pencarian dengan metode ini misalnya pencarian nomer telpon pada daftar phonebook. Misalnya nama data yang dicari berawalan huruf R, maka pencariannya tidak akan dilakukan dari awal, namun langsung membuka 2/3 atau 3/4 dari tebal buku.Jadi, data yang dicari relatif terhadap jumlah data.
Secara umum jika dirumuskan, posisi kunci pencarian interpolasi relatif ini adalah:
– Jika data[posisi] > data yg dicari, high = pos – 1
– Jika data[posisi] < data yg dicari, high = pos + 1
Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci tertentu yang
dilakukan dengan perkiraan letak data.

Algoritma interpolation sort

1. Masukan jumlah data
2. input data
3. awal = 0
4. akhir = n-1
5. data yang ingin dicari?
6. posisi = ((cari_data - data[awal])*(akhir-awal)+awal)/(data[akhir]-data[awal])
   cari_data == data[posisi]
7. Jika sama,cetak "data x pada posisi indeks ke-x dan proses pencarian sebanyak x
8. Jika tidak, Bandingkan : jika (data[posisi] < cari_data) awal = pos + 1
9. lakukan langkah 4 dan 5
10. Jika data[posisi] > cari_data, high = pos - 1 maka cetak "tidak ditemukan".

CONTOH FLOWCHART

CONTOH PROGRAM

#include <iostream>
#include <conio.h>
#include <iomanip>

using namespace std;

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

cout<<" I N T E R P O L A T I O N \n";
cout<<"       S E A R C H     \n";
cout<<"==============================\n";
cout<<"Masukan jumlah data : ";
cin>>x;
cout<<"input data :"<<endl;
for (int i=0;i<x;i++)
{
    cin>>data[i];
}
 cout<<"Data: ";
 for(int i = 0; i<x; i++)
 cout<<setw(3)<<data[i];
 cout<<endl<<endl;

 cout << "Data yang dicari : ";
 cin >> cari_data;

    awal = 0;
    akhir = x-1;
    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 indeks ke-" << 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



Selamat Mencoba '-')/

Komentar

Postingan populer dari blog ini

Bubble Sort dan Insertion Sort

- Bubble Sort - Bubble sort merupakan metode pengurutan data dengan cara membandingkan masing-masing elemen, kemudian melakukan pertukaran sekiranya perlu, artinya proses pertukaran tidak selamnaya dilakukan, jika tidak perlu maka tidak akan dijalankan. karena itulah metode ini sering dsebut sebagai metode pertukaran (exchange sort). Algoritma Bubble sort 1. input data a 2. Pengecekan mulai dari data a-0 sampai  data ke-a 3. Bandingkan data ke-a dengan data sebelumnya (a-1) 4.Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yg ada didepannya, sebelumnya cek satu persatu (a-1,a-2,a-3,....dst) 5.Jika lebih besar maka tidak terjadi pemindahan 6.Ulangi langkah 2 dan 3 sampai sort optimal Flowchart Bubble Sort ============================================================================= - Insertion sort - Insertion Sort merupakan algoritma yang efisien untuk mengurutkan angka yang mempunyai jumlah elemen sedikit. Dimana:- Input : deretan angka sej...

Finite State Machine (FSM) dan Pseudocode

Assalamualaikum Wr. Wb. Kali ini saya akan membuat FSM sederhana minimal 10 states yang dilengkapi dengan Pseudocode beserta penjelasannya. FSM : Pseudocode : using UnityEngine; using System.Collections; public class GameFSM : MonoBehaviour { public enum {LevelAwal, diam, jump, benda, soal, kunci, menembak, menghindar, musuh, nyawa, GameOver, NextLevel} public TurnStates state; public bool gameInProgress = true; void Start () { state = GameFSM.Mulai.Init; StartCoroutine ("TurnFSM"); } private IEnumerator TurnFSM (){ while(gameInProgress){ switch(state){ case TurnStates.LevelAwal: if( Permainan Awal()) {* state = diam:} break; case TurnStates.diam: if(Mulai()) {* state = jump;} break; case TurnStates.Jump: if( Melompat()) {* state = benda;} break; case TurnStates.benda: if( mencari benda()) {* state = soal;} if (menghindar ()) {* state = Musuh;} break; case TurnStates.benda: if( mencari Benda ()) {* state...