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
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