Kali ini akan dibahas proses pencarian / searching data pada suatu array / barisan data. Jika diketahui ada sebuah array / barisan data bernama A yang menampung 10 data yang bertipe integer sbb A={1,2,3,4,8,5,7,9,6,0} dan kita diberi tugas untuk mencari beberapa data misal:
- Jika data yang akan dicari dalam array A adalah 6, maka dengan cepat dapat kita ketahui bahwa data 6 ada dalam array A pada index ke-9 (index pada array dimulai dari 0)
- Sedangkan jika data yang akan dicari dalam array A adalah 12, maka dapat disimpulkan bahwa array A tidak memiliki data 12 tersebut.
Pada umumnya dikenal dua metode searching antara lain : Sequensial search dan binary search, Untuk lebih memahami, dimulai dari metode yang paling sederhana terlebih dahulu yaitu sequensial search.
Sequensial search
Disebut juga sebagai metode pencarian urut adalah metode pencarian yang paling mudah.
Sequential search memiliki proses sebagai berikut :
- Tentukan banyaknya data yang akan di olah, misal banyak data adalah N.
- Tentukan data apa yang akan dicari, misal data yang akan dicari adalah C.
- Deklarasikan sebuah counter untuk menghitung banyak data yang ditemukan, missal counternya adalah K.
- Inisialisasikan K =0
- Lakukanlah perulangan sebanyak N kali
- Dalam tiap proses perulangan tersebut periksalah apakah data yang sedangpakah data ke tesebut cisal oses sebagai berikut:
- ketemu.
- n yang paling mudah. ebih baik kita mulai dari metode yang diolah sama dengan data yang dicari.
- Jika ternyata sama K=K+1
- Jika tidak, lanjutkan proses perulangan .
- Setelah proses perulangan berhenti, periksalah nilai K.
- Jika nilai K lebih dari 0, artinya data yang dicari ada dalam data /array dan tampilkan nilai K ke layer sebagai jumlah data yang ditemukan.
- Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data / array dan tampilkan ke layar bahwa data tidak ditemukan
- Proses selesai.
Misalkan pada perulangan yang pertama kita masukkan data sebagai berikut :
Array A (berisi data yang akan diolah)
ISI | 1 | 3 | 5 | 8 | 6 | 5 | 7 | 11 | 9 | 0 |
INDEX | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Proses pencarian / proses perulangan yang kedua
Array A (berisi data yang akan diolah)
ISI | 1 | 3 | 5 | 8 | 6 | 5 | 7 | 11 | 9 | 0 |
INDEX | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Maka K++ menjadi 1, artinya ada 1 data dalam array A
Array index akan menyimpan index tempat data tersebut ditemukan pada array A
Array index (berisi index data yang ditemukan pada array A)
ISI | 2 | |||||||||
INDEX | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Maka K++ menjadi 2, artinya ada 2 data dalam array A
Array index akan menyimpan index tempat data tersebut ditemukan pada array A
Array index (berisi index data yang ditemukan pada array A)
ISI | 2 | 5 | ||||||||
INDEX | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Data 5 yang dicari ada 2 buah ß ambil dari variable K
Data tersebut terdapat dalam index ke: 2 5 ß ambil dari array index.
Binary search
Proses pencarian binary search hanya dapat dilakukan pada kumpulan data yang sudah diurutkan terlebih dahulu. Jika terdapat N buah data yang akan dolah, data yang dicari akan dibandingkan dengan data ke-N jika data ke-N lebih besar dari data yang dicari maka akan dilakukan pembagian data menjadi dua bagian. Kemudian ujung data pada setiap bagian dibandingkan lagi dengan nilai yang akan dicari.
|
Contoh kasus:
Ada 12 data 11 13 15 18 23 27 29 31 54 58 59 61
Data yang akan dicari : 13
- Proses 1
- Proses 2
- Proses 3
- Proses 4
- Proses 5
Dari proses diatas dapat disimpulkan bahwa binary search akan membagi-bagi sekumpulan data menjadi 2 bagian sampai data yang dicari ditemukan.
Kesimpulan
Sequential search lebih efektif jika digunakan pada sekumpulan data yang sedikit, sedangkan binary search efektif jika digunakan pada sekumpulan data yang berjumlah banyak.
Sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut, sedangkan binary search harus pada data yang sudah urut.
Interpolation search
Proses pencarian data ini hampir sama dengan proses pencarian binary search, pencarian ini juga dilakukan pada kumpulan data yang sudah urut. Akan tetapi jika pada binary search kita membagi data menjadi 2 bagian tiap prosesnya, pada interpolation search kita akan membagi data menurut rumus sebagai berikut:
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.
Misal terdapat data sebagai berikut:
Kode Judul Buku Pengarang
025 The C++ Programming James Wood
034 Mastering Delphi 6 Marcopolo
041 Professional C# Simon Webe
056 Pure JavaScript v2 Michael Bolton
063 Advanced JSP & Servlet David Dunn
072 Calculus Make it Easy Gunner Christian
088 Visual Basic 2005 Express Antonie
096 Artificial Life : Volume 1 Gloria Virginia
Kunci Pencarian ? 088
Low ? 0
High ? 7
Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]
Kunci[6] = kunci pencarian, data ditemukan : Visual Basic 2005
Kunci Pencarian ? 060
Low ? 0
High ? 7
Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]
Kunci[3] < kunci pencarian, maka teruskan
Low = 3 + 1 = 4
High = 7
Ternyata Kunci[4] adalah 063 yang lebih besar daripada 060.
Berarti tidak ada kunci 060.
Coding Program Interpolation Search untuk dicoba
Array Splice/Explode
Secara harafiah, dapat diartikan sebagai metode untuk memecah-mecah array. Pemecahan array itu sendiri, tergantung berdasarkan apa array akan dipecah.
Low ? 0
High ? 7
Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]
Kunci[6] = kunci pencarian, data ditemukan : Visual Basic 2005
Kunci Pencarian ? 060
Low ? 0
High ? 7
Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]
Kunci[3] < kunci pencarian, maka teruskan
Low = 3 + 1 = 4
High = 7
Ternyata Kunci[4] adalah 063 yang lebih besar daripada 060.
Berarti tidak ada kunci 060.
|
Array Splice/Explode
Secara harafiah, dapat diartikan sebagai metode untuk memecah-mecah array. Pemecahan array itu sendiri, tergantung berdasarkan apa array akan dipecah.
Agar lebih jelas, lihat ilustrasi array splice pada gambar berikut :
Char | P | A | K | A | N | T | O | N | |
Indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Char | P | A | K | A | N | T | O | N | |
Indeks1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | |
Indeks2 | 0 | 1 | 2 | 0 | 1 | 2 | 3 | 4 |
Coba coding array explode dan searchingnya berikut ini :
|
| ||
| ||
|
Komentar
Posting Komentar