Selasa, 17 Mei 2016

searching

SEARCHING

MENGERTI MASALAH :
mencari data yang akan di inputkan dari sekumpulan data data yang di masukan dengan binary search yaitu dengan cara memperkecil sekumpulan data yang ingin di inputkan dengan cara membagi  sekumpulan data menjadi 2 yang ada dalam tabel disetiap pencarian data...

PERCOBAAN DATA :
contoh data yang di inputkan 
misal :
data A =[3 4 5 6 7 8 9]
              ...........................
indeks  =0 1 2 3 4 5 6

key =7
maka nilai key 3 ditemukan  pada indeks  4

ANALISIS :
1. data di ambil dari posisi 1 sampai N 
2. cari posisi tengah data dengan rumus (posisi awal + posisi akhir)/2
3. data yang di cari di bandingkan dengan data tengahapakah apakah sama atau lebih kecil,atau lebih besar
4. jika lebih besar, maka  proses pencarian di cari dengan posisi awal adalah tengah +1
5. jika lebih kecil, maka  proses pencarian di cari dengan posisi akhir adalah tengah -1
6. jika sama, berarti ketemu 


ALGORITMA :
function pencarianBiner(input aray : larik; kunci, low, high : integer) : integer

Deklarasi
ketemu : boolean
i, middle : integer

Deskripsi
ketemu <- false
while (low <= high) and (not ketemu) do
middle <- (low+high) div 2
if (kunci = aray[middle]) then ketemu <- true { data pencarian = data di tengah }
else if (kunci < aray[middle]) then high <- middle – 1 {data akan dicari lagi di sebelah kiri}
else low <- middle + 1 {data akan dicari lagi di sebelah kanan}
endif
endwhile
if ketemu then pencarianBiner := middle
else pencarianBiner := -1;
endif


C++
#include <iostream>
#define UKURAN 7
using namespace std;
void cetakBaris(int b[], int rendah, int mid, int tinggi)
{ int i;
for (i=0; i<=UKURAN-1; i++)
if (i<rendah || i>tinggi) cout << "  ";
else if (i==mid) cout << "*" << b[i]<<" ";
else cout << b[i] << " ";
cout << "\n";
}
int pencarianBiner(int b[], int kunciPencarian, int rendah, int tinggi )
{ int i, middle;
while (rendah <= tinggi) {
middle = (rendah+tinggi) / 2;
cetakBaris(b, rendah, middle, tinggi);
if (kunciPencarian == b[middle])
return middle;
else if (kunciPencarian < b[middle])
tinggi = middle - 1;
else rendah = middle + 1;
}
return -1;
}
main() {
int a[UKURAN]={3,4,5,6,7,8,9}, i, kunci, hasil;
for (i=0; i<=UKURAN-1; i++){
cout<<a[i]<<" ";    
    
}
cout<<endl<<endl;
cout << "Masukkan bilangan yg ingin dicari index nya : ";
cin >> kunci;
hasil=pencarianBiner(a,kunci,0,UKURAN-1);
if (hasil != -1) cout << kunci
<< " ditemukan pada index : "<< hasil;
else
cout << kunci << " tidak ditemukan";
return 0;
}

Tidak ada komentar:

Posting Komentar