Searching dalam algoritma pemrograman

searching adalah proses pencarian data tertentu didalam sekumpulan data yang bertipe sama dengan cara memberikan data yang bernilai sama dengan data yang ingin di cari di dalam sekumpulan data tersebut. contoh:

ada variable array yang berisi 1 2 3 4 5 6 misalkan ingin mencari nilai 5 didalam array tersebut maka harus memberikian petunjuk atau nilai yang sama agar di bandingkan dengan nilai yang berisi di dalam array. pada metode searching ada 2 teknik yang digunakan yaitu : pencarian sekuensial (sequential search) dan pencarian biner (binary search).

  1. pencarian sekuensial (sequential search)
    pencarian skuensial (squential search) atau sering disebut pencarian linier menggunaka prinsip sebagai berikut :
    data yang di bandingkan satu persatu secara berurutan dengan yang dicari. pada dasarnya, pencarian ini hanya melakukan pengulangn dari 1 sampai jumlah data. jika nilai yang di cari dan salah satu nilai yang berada di dalam sekumpulan data sama maka di temukan. sebaliknya apabila perulangan sampai pada akhir maka berarti tidak di temukan.

notasi :

//Judul :      sequential search
//kamus :      p1<--integer
               data[1....7]={4,2,3,8,9,1,5} array of integer
               nilai_dicari<--integer
               ketemu<--integer
//deskripsi :
               p1<--1
               nilai_dicari<--input //anggap nilai_dicari di isi nilai 5
               
               while(p1<=7)
               {
                  if(data[p1]==nilai_dicari)
                     {
                         output data[p1]
                         ketemu=ketemu+1:
                         break;
                     }
                 p1=p1+1
               }


               if(ketemu==0) //berfungsi untuk mengkonfirmasi 
                              bahawa nilai yang di cari tidak 
                              terdapat di dalam data 
                              dengan mengkonvirmasi 
                              ketemu yang masih kosong atau 0
               {
               output "data tidak di temukan"
               }
               eles
               {
               ketemu=0
               }

contoh di aplikasikan dalam program bahasa C :

#include <stdio.h>
#include <stdlib.h>
///judul :     squential search
///kamus :
               int p1;
               int data[7]={4,2,3,8,9,1,5};
               int nilai_dicari;
               int ketemu;
///deskripsi :
int main()
{
          ketemu=0;
          p1=0;
          printf("array bertipe int data[7]={4,2,3,8,9,1,5}\n");
          printf("jika di uraikan seperti berikut :\n");
          while(p1<=7-1)
          {
              printf("data[%d]=%d\n",p1,data[p1]);
              p1=p1+1;
          }
             printf("\n");
          p1=0;
          nilai_dicari=5;
          printf("nilai yang dicari %d\n",nilai_dicari);

              while(p1<=7-1)///data sebanyak 7 tapi array di mulai dari 0
              {
                  if(data[p1]==nilai_dicari)///jika dat ake 
                                       index P1 sama dengan
                                       nilai di dalam
                                       variabel nilai_cari maka
                       {
                         printf("data ketemu di index %d yang bernilai
                         %d\n",p1,data[p1]);
                         ketemu=ketemu+1;
                         break;///untuk keluar dari perulangan dan 
                                 menjalan kan prosedur selanjutnya
                       }
                 p1=p1+1;
             }

                if(ketemu=0)
                {
                    printf("data tidak di temukan");
                }
                  else
                {
                  p1=0;
                  ketemu=0;
                }

}

hasil setalah program di jalankan

squential-search

2. pencarian biner (binary search)
salah satu syarat binary search dapat dilakukan adalah data sudah dalam keadaan terurut. dengan kata lain, apabila data belum terurut, pencarian biner tidak dapat dilakukan.

mula-mula diambil dari posisi awal=1 dan posisi akhir =n.kemudian kita cari posisi data tengah dengan rumus posisi tengah = posisi awal+posisi akhir) div 2, kemudian data yang di cari dibandingkan dengan data tengah. jika sama, data ditemukan, proses selesai. jika lebih kecil, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah -1. jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1.

//notasi :

//judul :     binery search
//kamus :     awal,akhir,tengah,cari<--integer
              data[1...7]={1,2,3,4,5,6,7}  array of integer
              ketemu<--integer
//deskripsi
              cari<-- input
              awal<--1
              akhir<--7-1
                   while(awal<=akhir)
                   {
                      tengah=(awal+akhir)/2 
                            if(data[tengah]==cari)
                            {
                            output data[tengah]
                            ketemu=ketemu+1
                            break;
                            }
                            else if(cari< data[tengah])                          
                            {
                            akhir=tengah-1
                            }
                            else
                            {
                            awal=tengah+1
                            }
                   }
           if(ketemu==0)
            {
            output "data tidak ada" 
            }
            else
            {
            ketemu=0;
            }

contoh di aplikasi kan dalam program bahasa C :

#include <stdio.h>
#include <stdlib.h>
///judul      : binery search
///kamus      :
                int ketemu,awal,akhir,tengah,cari;
                int data[7]={1,2,3,4,5,6,7};
                int p1;
///desktripsi :
int main()
{
   cari=1;
   awal=0;
   akhir=7-1;
   printf("nilai yang di cari adalah %d\n",cari);
   printf("dari array data[7]={1,2,3,4,5,6,7};\n");
   printf("berikut tahapan program dalam mencari nilai :\n\n");
       while(awal<=akhir)
       {
         for(p1=awal;p1<akhir+1;p1++)///hanya untuk output bukan biner 
                                         search inti
             { 
                 printf("%d",data[p1]);
             }
         printf("\n");

         tengah=(awal+akhir)/2;
         if(data[tengah]==cari)
         {
            printf("\nketemu di index %d = %d\n",tengah,data[tengah]);
            ketemu=ketemu+1;
            break;
         }
         else if(cari<data[tengah])
         {
            akhir=tengah-1;
         }
         else
         {
         awal=tengah+1;
         }
       }

     if(ketemu==0)
     {
       printf("data tidak ada");
     }
     else
     {
       ketemu=0;
     }
}

hasil setalah program di jalankan :

binery-search

 

Leave a Reply

Your email address will not be published. Required fields are marked *