Senin, 03 Oktober 2016

SEARCHING

SEARCHING

I. Pengertian Searching

      Searching adalah suatu proses untunk menemukan nilai di dalam sekumpulan datang bertipe sama baik berbertipe dasar maupun bertipe bentukan. Sebagai contoh, jika kita menggunakan Kamus untuk mencari kata-kata dalam Bahasa Inggris yang belum diketahui terjemahannya dalam Bahasa Indonesia. Contoh lain saat kita menggunakan buku telepon untuk mencari nomor telepon teman atau kenalan dan masih banyak contoh yang lain. Pencarian data sering juga disebut table look-up atau storage and retrieval information adalah suatu proses untuk mengumpulkan sejumlah informasi di dalam pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat mungkin.

   Metode pencarian data dapat dilakukan dengan dua cara yaitu pencarian internal (internal searching) dan pencarian eksternal (external searching). Pada pencarian internal, semua rekaman yang diketahui berada dalam pengingat komputer sedangakan pada pencarian eksternal, tidak semua rekaman yang diketahui berada dalam pengingat komputer, tetapi ada sejumlah rekaman yang tersimpan dalam penyimpan luar misalnya pita atau cakram magnetis. Selain itu metode pencarian data juga dapat dikelompokkan menjadi pencarian statis (static searching) dan pencarian dinamis (dynamic searching). Pada pencarian statis, banyaknya rekaman yang diketahui dianggap tetap, pada pencarian dinamis, banyaknya rekaman yang diketahui bisa berubah-ubah yang disebabkan oleh penambahan atau penghapusan suatu rekaman. Ada dua macam teknik pencarian yaitu pencarian sekuensial dan pencarian biner.

    Dan kedua metode tersebut terdapat 2 perbedaan yang sangat mencolok, yaitu jika dari sekuensial searching menggunakan data yang tidak beraturan atau acak sedangkan biner menggunakan data yang sudah terurut dahulu, dan saya akan menjelaskan kedua macam teknik tersebut sebagai berikut :

           1. Sequential search
            Sequential search adalah metode pencarian data dengan mencari data secara skuansial atau dari awal sampai dengan akhir data, dan secara konsep seqental search ialah membandingkan data satu persatu secara berurutan sampai data tersebut ditemukan.

                        

                 Algoritma Sequential Search
      1. i ← 0
      2. Ketemu ←false
      3. Selama (tidak ketemu) dan (i < N) kerjakan baris 4
      4. Jika (Data[i] = key) maka
      5. Ketemu ←true
      6. Jika tidak
      7. i ←i+1
      8. Jika (ketemu) maka
      9. i adalah indeks dari data yang dicari
      10. Jika tidak
      11. Data tidak ditemukan
                 Program C nya :


#include <stdio.h>
#include <conio.h>
main()
{
int arr[]={12,23,78,98,67,56,45,19,65,9},key,i,flag=0;
clrscr();
printf("\nENTER A NUMBER: ");
scanf("%d",&key);
for(i=0;i<10;i++)
{
if(key==arr[i])
flag=1;
}
if(flag==1)
printf("\nTHE NUMBER %d EXISTS IN THE ARRAY",key);
else
printf("\nTHE NUMBER %d DOES NOT EXIST IN THE ARRAY",key);
getch();
}

                 Keunggulan dari Sequential search : 
                        
                            1. Relatif lebih cepat dan efisien untuk data yang jumlahnya terbatas.

                            2. Algoritma programnya lebih sederhana.

                 Kelemahan dari sequential search :

                            1. Kurang cepat untuk mengerjakan data dalam jumlah besar.

             2. Binary Search
         Binary Search adalah metode pencari dengan dimana kumpulan data tersebut haruslah mengurut dengan benar agar proses pencarian data dapat dilakukan, dalam proses pencariannya akan di bagi dua di setiap tahap pencariannya.

                 Algoritma Deskriptif binary search berikut :
      1. Input seluruh data kedalam array
      2. Input data yang dicari
      3. Tentukan nilai kiri, kanan, dan tengah dengan rumus :
      4. Kiri sama dengan nol
      5. Kanan lebih kecil dari jumlah data
      6. Tengah sama dengan hasil kanan dikurangi hasil kiri dibagi dua.
      7. Jika elemen tengah tidak sama dengan data yang dicari, maka :
        • Jika elemen tengah lebih besar dari data yang dicari, maka pencarian dilakukan pada setengah array pertama. Caranya dengan menggunakan perintah kiri sama dengan tengah ditambah satu.
        • Jika elemen tengah lebih kecil dari data yang dicari, maka pencarian dilakukan pada setengah array berikutnya. Caranya dengan menggunakan perintah kanan sama dengan tengah dikurangi satu.
        • Tengah sama dengan kiri ditambah (kanan - kiri) dibagi dua.
        • Jika elemen tengah sama dengan data yang dicari, maka data ditemukan. Sedangkan jika elemen tengah tidak sama dengan data yang dicari, maka data tidak ditemukan.
                  Program binary search di C :



#include <stdio.h>
 
int main()
{
   int c, first, last, middle, n, search, array[100];
 
   printf("Enter number of elements\n");
   scanf("%d",&n);
 
   printf("Enter %d integers\n", n);
 
   for (c = 0; c < n; c++)
      scanf("%d",&array[c]);
 
   printf("Enter value to find\n");
   scanf("%d", &search);
 
   first = 0;
   last = n - 1;
   middle = (first+last)/2;
 
   while (first <= last) {
      if (array[middle] < search)
         first = middle + 1;    
      else if (array[middle] == search) {
         printf("%d found at location %d.\n", search, middle+1);
         break;
      }
      else
         last = middle - 1;
 
      middle = (first + last)/2;
   }
   if (first > last)
      printf("Not found! %d is not present in the list.\n", search);
 
   return 0;   
}


                        Kelebihan Binary search :
      1. Untuk datang jumlah besar cenderung lebih cepat karena data sudah terurut.
                         Kekurangan Binary search :
      1. Data harus sudah di Sorting terlebih dahulu agar proses pencarian lebih mudah.
      2. Algoritma pemrogramannya lebih rumit dari sequential search, tidak baik untuk data berangkai.                        


Sumber :
http://aguspande96.blogspot.co.id/2015/06/sequential-dan-binary-search.html
http://blog-sharings.blogspot.co.id/2012/07/konsep-binary-search.html
http://scanftree.com/programs/c/sequential-search-programs-in-c/

                 



Tidak ada komentar:

Posting Komentar