Wednesday, March 13, 2013

Algoritma Metode Pencarian Sekuensial

Metode Pencarian
Diberikan sekumpulan data dalam suatu variabel array. Andaikan user hendak menemukan suatu data tertentu dari sekumpulan data tersebut. Informasi yang diinginkan user yaitu pada indeks ke berapakah data ditemukan bila ada, dan informasi bahwa data tidak ditemukan bila data yang dicari tidak terdapat dalam sekumpulan data tersebut. Terdapat beberapa metode yang bisa dipakai untuk memecahkan masalah tersebut, diantaranya adalah metode sekuensial dan metode biner.


1. Metode Sekuensial
Metode ini adalah membandingkan data yang hendak dicari dengan data pertama hingga data ditemukan atau data terakhir. Bila sudah membandingkan dengan data terakhir dan masih belum sama dengan yang hendak dicari, berarti data sudah tidak mungkin ditemukan.
Dalam algoritma yang kita buat, dideklarasikan suatu variabel boolean yang bernilai true bila data ditemukan dan bernilai false bila data tidak ditemukan.
Langkah-langkah pengerjaan:
Misalkan data yang hendak dicari adalah x
1. bandingkan x dengan data ke-1
2. ulangi langkah pertama untuk data berikutnya hingga data terakhir atau data sudah ditemukan


01| Algoritma Pencarian_Metode_Sekuensial
02| {Diinputkan n buah data bilangan bulat, kemudian user menginputkan data yang hendak dicari. Algoritma mencetak indeks data jika ditemukan, atau mencetak informasi bila data tidak ditemukan}
03| Deklarasi:
04| const max = 50
05| type TData = integer
06| type TLarik = array[1..max] of TData
07| data : TLarik
08| x : TData {menyimpan data yang hendak dicari}
09| k, n : integer
10| ketemu : booelan {menyimpan apakah data ditemukan atau tidak}
11| Deskripsi
12| read(n)
13| for k  1 to n do
14| read(data[k])
15| end for
16| {meminta input dari user data yang hendak dicari}
17| read(x)
18| {pemberian nilai awal}
19| ketemu  FALSE

20| k  1 {mulai dari data ke-1}
21| {secara berulang, bandingkan dengan data yg hendak dicari}
22| repeat
23| if x = data[k] then {jika sama, berarti sudah ditemukan}
24| ketemu  TRUE
25| else
26| k  k + 1 {cari untuk data berikutnya}
27| end if
28| until ketemu or (k>n) {hingga data ditemukan atau data habis}
29| {mencetak informasi}
30| if ketemu then
31| write(k) {mencetak posisi data ditemukan}
32| else
33| write(‘Data tidak ditemukan’)
34| end if


Sebenarnya algoritma di atas dapat diperbaiki, yaitu dengan menghilangkan variabel ketemu. Tekniknya adalah menggunakan nilai k sebagai acuan. Bila nilai kn berarti data tidak ditemukan karena variabel k merupakan penunjuk posisi data ditemukan. Algoritma selengkapnya disajikan berikut ini.

01| Algoritma Pencarian_Metode_Sekuensial
02| {Diinputkan n buah data bilangan bulat, kemudian user menginputkan data yang hendak dicari. Algoritma mencetak indeks data jika ditemukan, atau mencetak informasi bila data tidak ditemukan}
03| Deklarasi:
04| const max = 50
05| type TData = integer
06| type TLarik = array[1..max] of TData
07| data : TLarik
08| x : TData {menyimpan data yang hendak dicari}
09| k, n : integer
10| Deskripsi
11| read(n)
12| for k  1 to n do
13| read(data[k])
14| end for
15| {meminta input dari user data yang hendak dicari}
16| read(x)
17| {pemberian nilai awal}
18| k  0 {mengapa kali ini diberi nilai awal 0?}
19| repeat
20| k  k + 1
21| until (k > n) or (x = data[k])
22| {mencetak informasi}
23| if k > n then
24| write(‘data tidak ditemukan’)
25| else
26| write(k) {mencetak posisi indeks data ditemukan}
27| end if


No comments:

Post a Comment

Kebahagiaan sejati bukanlah pada saat kita berhasil meraih apa yg kita perjuangkan, melainkan bagaimana kesuksesan kita itu memberi arti atau membahagiakan orang lain.