Selasa, 04 Oktober 2016

Searching

Searching
Searching atau pencarian merupakan proses yang fundamental dalam pengelolaan data.proses pencarian bertujuan untuk menemukan data tertentu dalam sekumpulan data yang bertipe sama .
sebagai contoh, saat kita akan mengubah suatu data maka hal yang pertama kali kita lakukan adalah mencari keberadaan data tersebut. Contoh lainnya pada saat ita akan menginsertkan data, hal yang paling pertama kita melakukan pencarian agar tidak menginputkan data yang sama, setalah titu baru kita bias menginputkan data.
Ada dua maca metode  searching, yaitu :

1.      Sequential Search
Sequential Search atau pencarian beruntun adalah algoritma pencarian yang paling sederhana dibandingkan dengan Bianary Search. Pada dasarnya metode pencarian ini mengunaka proses mebandingkan satu persatu secara beruntun mulai dari elemen awal hingga elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa. Oleh karena itu metode sequential search memiliki nama lain yaitu linear search atau pencarian lurus.
Pencarian beruntun dapat dilakukan dengan dua acara yaitu dengan menguanankan Boolean atau tanpa Boolean .
Contoh pengunaan sequential seach tanpa Boolean :
Di misalkan data sebagai berikut,
Data
3
6
2
9
15
Indeks
1
2
3
4
5

Data yang di cari adalah 2
lalu program akan membadingkan data yang dicari dengan data yang ada,
Indeks 1(3) = 2 ? tidak
indeks 2(6) = 2 ? tidak
indeks 3(2) = 2 ? ya
Setelah dibadingkan ternyata data yang dicari ditemukan pada indeks ke 3.

Algoritma dari sequential search mengunakan Boolean.

Contoh pengunaan sequential search dengan boolean

logika pencarian dengan boolean sama dengan yang tanpa boolean haya algoritmanya saja yang berbeda.
1.      Binary Search
Berbeda dengan sequential search yang bisa dilakukan dengan data acak, binary search hanya akan berjalan jika data telah terurut.
Binary search adalah pencarian dengan membagi larik menjadi dua bagian. Prinsip yang digunakan dalam sequential search sama seperti kita mencari data dalam kamus, yaitu membagi dua dan dibandingkan, apabila masil belum ketemu akan dibagi dua dan dibandingkan lagi.
Algoritma: 
Di misalkan data sudah terurut :
A
3
6
8
12
18
51
62
66
1
2
3
4
5
6
7
8

Kasus ke-1  : cari = 12
Langkah 1 : tengah = (batasatas + batasbawah) div 2=( 1 + 8 ) div 2 = 4
A [tengah] = A [4] = 12pada Looping pertama data telah ditemukan.
Kasus ke-2 : cari = 10
Langkah pertama :tengah=(batasatas + batasbawah) div 2=( 1 +  8 ) div 2=4
A [tengah] = A [4] = 12 > cari = 10, berarti Batasbawah =tengah – 1 = 4 – 1 = 3

Langkah kedua :tengah=(batasatas + batasbawah) div 2=( 1 +  3 ) div 2=2
A [tengah] = A [2] = 5 < cari = 10, berarti Batasatas =tengah + 1 = 2 + 1 = 3

Langkah ketiga :tengah=(batasatas + batasbawah) div 2=( 3 +  3 ) div 2=3
A [tengah] = A [3] = 8, berarti  setelah Langkah ketiga, data tidak ditemukan


Kedua algoritma pencarian ini memiliki kelebihan dan kekurangan masing-masing. Algoritma pencarian beruntun dapat digunakan untuk data yang sudah terurut maupun data yang belum terurut. Sebalik, Algoritma pencarian bagi dua hanya dapat digunakan jika data telah terurut.
Jika kita tinjau dari kinerja pencarian, apabila data x tidak ditemukan, algoritma pencarian beruntun akan mencarinya sebanyak x(banyaknya data), sedangkan algoritma pencarian bagidua memerlukan waktu yang sebanding dengan 2log(x).
perbandingan anatara algoritma sequential search dengan binary search, dimisalkan data sudah terurut :
Untuk larik yang berukuran x = 256 elemen
sequential search melakukan perbandingan elemen larik
sebanyak 256 kali. Sedangakan , algoritma binary search melakukan
perbandingan elemen larik sebanyak 2log(256) = 8 kali.


Referensi :
Munir,renaldi.,Algoritma & Pemrograman Dalam Bahasa Pascal Dan C edisi revisi ,Informatika Bandung, 2011.

Tidak ada komentar:

Posting Komentar