Show InterpolationSearch merupakan sebuah teknik pengembangan dari binary search. Teknik binary search akan selalu memeriksa nilai tengah dari setiap array, sedangkan interpolation search dapat pergi ke lokasi yang berbeda berdasarkan key yang didapat. Jika nilai key lebih dekat ke array yang terakhir, maka teknik interpolation search akan memulai pencarian dari array yang terakhir.Nilai Mid untuk interpolation search di dapat dari : Misalkan kita memiliki int arr[] = {70, 60, 30, 50, 40,20}, data para int arr harus diurutkan terlebih dahulu menggunakan teknik sorting seperti bubble sort. Sehingga array kita akan menjadi int arr[] = {20,30,40,50,60,70}. Apabila angka yang dicari adalah angka 40, berikut gambaran dari implementasi InterpolationSearch: 1st Cycle: low = mid + 1 *Array di mulai dari index ke 0, maka index ke 3 berisi nilai 50. 2nd Cycle: low = mid + 1 3rd Cycle: 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. Berikut implementasi dari Binary Search menggunakan Bahasa C:
Reference: Paul Deitel & Harvey Deitel. (2016). C how to program : with an introduction to C++. 08. Pearson Education. Hoboken. ISBN: 9780133976892. Published at : 26 December 2019
Dalam kehidupan sehari-hari sebenarnya kita sering melakukan pencarian data. Sebagai contoh, jika kita menggunakan Kamus untuk mencari kata-kata dalam Bahasa Inggris yang belum diketahui terjemahannya dalam Bahasa Indonesia. Contoh lain saat kita menggunakan buku telepon untuk mencari nomor telepon teman atau kenalan dan masih banyak contoh yang lain. Pencarian (Searching) merupakan suatu proses yang penting dalam pengelolaan data atau nilai. Proses pencarian adalah menemukan suatu data atau nilai tertentu dalam kumpulan data yang memiliki tipe yang sama baik tipe dasar atau tipe bentuk. Data atau nilai yang dimaksud disini adalah data yang disimpan secara temporer dalam memori utama atau disimpan secara permanen didalam memori sekunder contohnya tape atau disk. Didalam memori utama, struktur penyimpanan data yang umum adalah berupa larik atau tabel (array), sedangkan didalam memori sekunder berupa file atau arsip. 2. Jenis-jenis SearchingAda beberapa jenis searching : 1. Sequential SearchSequential Search adalah suatu teknik pencarian data dalam array (1 dimensi) yang akan menelusuri semua elemen array dari awal hingga yang paling akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Berikut ini kelebihan dan kekurangan dari Sequential Search :
Proses-proses dari Sequential Search :
2. Binary SearchBinary Search adalah suatu metode pencarian suatu data yang ada didalam kumpulan data dimana data-data tersebut sudah berurut. Karena, proses pencarian tidak akan terjadi jika data-data yang berada didalam kumpulan data tersebut tidak berurut. Dalam proses pencarian dengan metode ini data akan dibagi menjadi dua bagian untuk setiap tahap pencariannya. Berikut kelebihan dan kekurangan dari Binary Search:
Proses-proses Binary Search:
3. Interpolation SearchInterpolation Search adalah suatu metode pencarian data yang sudah terurut dengan cara memperkirakan letak data yang berada dalam kumpulan data tersebut. Contoh ilustrasi : jika kita mencari kata dalam KBBI dengan awalan M, kita tidak perlu mencari dari awal kamus. Tapi, kita dapat langsung mencari pada bagian tengah kamus tersebut. Proses Interpolation Search menggunakan rumus: Posisi = (kunci-data[low]/data[high]-data[low])*(high-low)+low Singkatnya proses pencarian interpolation search hampir mirip dengan proses pencarian kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data. Referensi :Loading Preview Sorry, preview is currently unavailable. You can download the paper by clicking the button above.
INTERPOLATION SEARCH Konsep pencarian interpolation search adalah seperti pada pencarian dalam kamus. Jika kita ingin mencari kata dengan huruf depan S, maka kita tidak perlu mencarinya dari data awal namun dapat dicari langsing pada 2/3 atau 3/4 jumlah data. interpolation sort, dirumuskan dengan : POSISI = keyword-data[low])*(high-low)/(data[high]-data[low])+low Jika data[posisi] > keyword, high = posisi - 1 Jika data[posisi] < keyword, low = posisi + 1 berikut adalah Algoritma dari interpolation search, ALGORITMA INTERPOLATION SORT
1. Masukan Data. 4. Ketika LOW <= HIGH, lakukan 5. POSISI == keyword-data[low])*(high-low)/(data[high]-data[low])+low 6. Jika data kunci sama dengan data[POSISI] 7. Maka data ditemukan di index-n 8. Namun jika data kunci lebih dari data[POSISI],
Maka lakukan LOW == POSISI +1
Maka lakukan HIGH== POSISI – 1
berikut adalah flowchart dari interpolation search, FLOWCHART INTERPOLATION SORT
berikut contoh kode program interpolation search, #include <iostream>#include <conio.h>#include <iomanip>using namespace std;int main(){ int data[100]; int n; int keyword, posisi, low, high, proses; bool berhenti = false; cout << "Masukan jumlah data : " ; cin >> n; cout << "INPUT DATA : " << endl; for (int i=0; i<n; i++) { cin >> data[i]; } cout << "Data : "; for (int i=0; i<n; i++) cout << setw(3) << data[i]; cout << endl << endl; cout << "Data yang dicari : "; cin >> keyword; low = 0; high = n-1; proses = 0; while(berhenti != true) { proses++; posisi = (((keyword-data[low])*(high-low))/(data[high]-data[low])+low); if(data[posisi] == keyword) { cout << "Data " << keyword << " pada posisi indeks ke-" << posisi <<endl; cout << "Proses pencarian sebanyak " << proses <<endl; berhenti = true; } else if(data[posisi] < keyword) { low = posisi + 1; } else { cout << "Data yang anda cari tidak ditemukan.\n"; berhenti = true; } } return 0; } OUTPUT PROGRAM Page 2 |