Kamis, 12 Mei 2011

PENCARIAN

PENCARIAN

1. PENCARIAN SEKUENSIAL

Pencarian berurutan sering disebut pencarian linear merupakan metode pencarian

yang paling sederhana. Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan.

Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data tidak ada. Pada kasus yang paling buruk, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula.

Algoritma pencarian berurutan dapat dituliskan sebagai berikut :

1 i 0

2 ketemu false

3 Selama (tidak ketemu) dan (i <= N) kerjakan baris 4

4 Jika (Data[i] = x) maka ketemu true, jika tidak i i + 1

5 Jika (ketemu) maka i adalah indeks dari data yang dicari, jika tidak data tidak

Ditemukan.

Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian sekuensial.

int SequentialSearch(int x)

{

int i = 0;

bool ketemu = false;

while ((!ketemu) && (i < Max)){

if(Data[i] == x)

ketemu = true;

else

i++;

}

if(ketemu)

return i;

else

return -1;

}

Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data

tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.

2. PENCARIAN BINER

Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam

keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus

Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil

posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah sama dengan yang dicari.

Algoritma pencarian biner dapat dituliskan sebagai berikut :

1 L 0

2 R N - 1

3 ketemu false

4 Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8

5 m (L + R) / 2

6 Jika (Data[m] = x) maka ketemu true

7 Jika (x < Data[m]) maka R m – 1

8 Jika (x > Data[m]) maka L m + 1

9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak

ditemukan

Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.

int BinarySearch(int x)

{

int L = 0, R = Max-1, m;

bool ketemu = false;

while((L <= R) && (!ketemu))

{

m = (L + R) / 2;

if(Data[m] == x)

ketemu = true;

else if (x < data[m])

R = m - 1;

else

L = m + 1;

}

if(ketemu)

return m;

else

return -1;

}

Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data

tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.

Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila

data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang

dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu :

C = 2log(N)

REFERENSI :

lecturer.eepis-its.edu/...%20Algoritma/.../Data%20Structure%20-%20Bab%208.pdf

Tidak ada komentar:

Posting Komentar