Kamis, 16 Januari 2014

ALPRO : Materi Algoritma Pencarian


ALGORITMA PENCARIAN

Pengertian Pencarian
Pencarian merupakan proses yang fundamental dalam pengolahan data. Proses pencarian adalah menemukan nilai (Data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan).
Sebagai contoh untuk mengubah (update) data tertentu, langkah pertam ayang harus dilakukan adalah mencari keberadaan data tersebut di dalam kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat diubah dinilainya dengan data yang baru.. Aktivitas awal yang sama juga dilakukan pada proses penambahan (insert) data baru.

Spesifikasi Masalah

Metode Pencarian
                              1.            Algoritma Pencarian Beruntun
Algoritma pencarian Beruntun adalah metode algoritma pencarian yang paling sederhana. Nama lain metode ini adalah linear search.
Algoritma pencarian beruntun adalah proses membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama, sampai elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa.

Contoh :
Misalkan Elemen yang akan dicari adalah : 51

Contoh coding program misalkan elemen yang di cari adalah 51
#include<stdio.h>
int main ()
{
                int i;
                int nilai[9];
                nilai[0]=10;
                nilai[1]=31;
                nilai[2]=47;
                nilai[3]=89;
                nilai[4]=1;
                nilai[5]=51;
                nilai[6]=87;
                nilai[7]=90;
                nilai[8]=12;
                for(i=0;i<=8;i++)
                {
                if(nilai[i]==51)
                {
                                printf("nilai 51 ditemukan");
                               
                }else
                {
                                printf("nilai tidak ditemukan");
                }
                printf("\n");
}
return 0;
}

Output :


§  Contoh program lain

#include<stdio.h>
int main ()
{
                int nilai[5];nilai[0]=12;nilai[1]=51;nilai[2]=2;nilai[3]=34;nilai[4]=90;
                int nilai_yang_dicari=45;
                int i;
                int hasil=0;
                for (int i=0;i<=4;i++)
                {
                                if (nilai[i]==nilai_yang_dicari)
                                {
                                                hasil=i;
                                }
                }
                                printf("Nilai %d ditemukan di index ke %d",nilai_yang_dicari,hasil);
               
                return 0;
}

Output :


                              2.            Algoritma pencarian bagi dua
Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagidua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. Data yang disimpan di dalam larik harus sudah terurut.
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :
                                                      1.            Mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.
                                                      2.            Kemudian data yang dicari dibandingkan dengan data tengah.
                                                      3.            Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.
                                                      4.            Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.
                                                      5.            Demikian seterusnya sampai data tengah sama dengan yang dicari.

Misalkan yang dicari adalah 31
i+j/2 =1 + 7/2 = 4
 Apakah index yang ketujuh adalah 31 (!=)
Putuskan apakah mencari dari kiri atau kanan
Misal dari kanan
§  Contoh :
i=1;
J=4;
i+j/2
(1+4)/2=2

Putuskan Mencari dari kiri atau kanan
i=1;
J=2
1+2/2=1



Perbedaan Mendasar dari Sequential dan Binery :

Sequential : Algoritma Beruntun dapat digunakan baik untuk data yang belum teruru maupun untuk data yang sudah terurut.                                                     
 Binery : Algoritma bagi dua hanya cocok digunakan untuk mencari data yang sudah terurut saja.

Tidak ada komentar:

Posting Komentar