Searching pada C++

Pengertian Sequential search
    Metode sequential seach/pencarian beruntun  adalah pencarian di dalam linier yang merupakan pencarian dengan mode paling simple. Pencarian beruntun yang digunakan untuk melakukan pencarian data, baik pada array yang sudah terurut urut maupun belum terurut. Proses yang terjadi pada metode in adalah :
1. Membaca array data
2. Menetukan data yang di cari
3. Mulai dari data pertama sampai dengan data terakhir, data yang di cari dibandingkan masing-masing data dalam array.
a. Jika data dicari tidak ditemukan, maka semua data atau elemen array di bandingkan sampai selesai .
b. Jika data yang di cari di temukan maka perbandingan akan dihentikan.
  Contoh kasusnya :
  Terdapat 6 buah data tersimpan yaitu :
    9 7 3 4 6 5
 Pertama lakukan pencarian di dalam data tersebut apakah terdapat data bernilai 5
                   1     2    3   4   5   6                   i= 1 s/d n
A :              9     7    3   5   6   10
X= 5
Ketemu ß fasle
I = 1
A[1]<>{ Ketemu ß fasle}
I= 1+1= 2
A[2]<>{ Ketemu ß fasle}
I= 2+1=3
A[2]<>{ Ketemu ß fasle}
I= 3+1=4
Jadi hasil dari pencarian data bernilai 5 di temukan pada posisi ke 3
Contoh program

  1. #include <conio.h>
  2. #include <iostream.h>
  3.  
  4. void main()
  5. {
  6. int a,b ,index;
  7.  
  8. int X[15]={8,10,12,9,7,6,4,3,15,13,14,2,12,11,1};
  9.  
  10.  cout<<"Angka : ";
  11.  for(b=0;b<15;b++)
  12.    {
  13.      cout<<X[b]<<" ";
  14.    }
  15.  
  16.     cout<<"\nmasukan Angka yang ingin kamu cari: ";
  17.     cin>>a;
  18.     b=0;
  19.     index=0;
  20.     while(b<14 && X[b]!=a)
  21.        {
  22.            b++;
  23.        }
  24.  if (X[b]!=a)
  25.     {
  26.      cout<<"SORRY ANGKA YANG ANDA CARI TIDAK TERSEDIA DI INDEX";
  27.     }
  28.    else if(index=b+1)
  29.    cout<<"Data berada di index ke "<<index;
  30.    getch();
  31. }

Pengertian Binerry search
   Binerrry search adalah metode pencarian suatu data atau elemen di dalam suatu array dengan kondisi data dalam keadaan urut. Proses pencarian biner dapat dijelaskan sebagai berikut mula-mula diambil dari posisi awal=1 dan posisi akhir =n, kemudian di cari posisi tengah rumus: ( posisi awal + posisi akhir )/2. Setelah itu data yang dicari dibandingakan dengan data yang berada ditengah. Jika hasilnya lebih kecil , maka ulangi proses diatas dalam hal ini posisi akhir=posisi tengah-1. Jika lebih besar hasilnya maka lakukan proses diatas tetapi dalam hal ini posisi akhir =posisi tengah +1.
Contoh kasus
Data :  6, 7 , 9, 11 ,12, 13 , 20
Kemudian carilah data 13 di posisi manakah berada
Pertama carilah posisi awal data.  Pada  contoh di atas data awalnya adalah 6
Langkah ke dua adalah cari posisi akhir. Pada contoh di atas data akhirnya adalah 20
Langkah ke 3 adalah mencari data tengahnya dengan rumus (posisi awal + posisi akhir)/2. Sesuai dengan contoh diatas data tengahnya (1+7)/2=8/2=4. Data yang berada pada posisi ke 4 adalah angka 11
Langkah ke 4 karena data yang kita cari adalah 13 > angka 11 maka rumusnya adalah posisi awal pencarian =posisi tengah+1 =4+1 = 5.
Langkah ke 5 data tengah yang di peroleh yaitu (5+7)/2=6. Bearti data tengah yang terbaru berada pada posisi ke 6 bearti angka 13 .
Langkah ke 6 karena data sudah di temukan maka prosesnya selesai jika data belum di temukan maka ulangi proses tersebut  

Contoh programnya

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream.h>
  4. void main()
  5. {
  6.         int nilai[15];
  7.    int jumlah,i,j;
  8.    int cari,tukar,kanan,kiri,tengah,cr;
  9.  
  10.         //proses penginputan data
  11.    cout<<"=============PROGRAM BINNARY SEACRH==============="<<endl;
  12.    cout<<""<<endl;
  13.    cout<<"INPUTKAN JUMLAH DATA = ";
  14.    cin>>jumlah;
  15.    cout<<""<<endl;
  16.         for(int i=0;i<jumlah;i++)
  17.         {
  18.         cout<<"Masukkkan data  posisi ke - "<<(i+1)<<" = ";
  19.       cin>>nilai[i];
  20.         }
  21.    cout<<""<<endl;
  22.    cout<<"Input data yang dicari :";
  23.    cin>>cari;
  24.  
  25.         //proses pengurutan data
  26.         for(int i=0;i<jumlah;i++)
  27.         {
  28.              for(int j=i+1;j<jumlah;j++)
  29.              {
  30.                if (nilai[i]>nilai[j])
  31.                {
  32.                 tukar=nilai[i];
  33.                 nilai[i]=nilai[j];
  34.                 nilai[j]=tukar;
  35.                }
  36.             }
  37.        }
  38.  
  39.         //proses pencarian data
  40.         cr=0;
  41.         kanan=jumlah;
  42.         kiri=0;
  43.         while(kanan>=kiri)
  44.         {
  45.                 tengah=(kanan + kiri)/2;
  46.                 if(nilai[tengah]==cari)
  47.                 {
  48.                         cr++;
  49.                 }
  50.                 if(nilai[tengah]<cari)
  51.                 {
  52.                         kiri=tengah+1;
  53.                 }
  54.                 else
  55.                 {
  56.                         kanan=tengah-1;
  57.                 }
  58.    }
  59.         if (cr>0)
  60.    {
  61.         cout<<"Data " << cari << " ada dalam array silahkan liat posisinya sendiri"<<endl;
  62.    }
  63.         //jika data tidak ditemukan
  64.         else
  65.         {
  66.         cout<<"Data tidak ditemukan dalam array"<<endl;
  67.    }
  68.    getch();
  69. }

1 comment:

Pengurutan bilangan dari besar ke kecil dengan C++

Berikut program mencari mengurutkan bilangan dari besar ke kecil dengan metode Bubble Shorting. #include <iostream>    using name...