Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Oleh-oleh untuk dibawa pulang

Buatlah algoritma dan flowchart untuk melakukan :


1. Input data nilai mahasiswa untuk N nilai siswa (array) asumsi nilai diinput terurut.
2. Lakukan pencarian terhadap data nilai mahasiswa tertentu dengan metode binary
search, tampilkan hasilnya jika data ketemu atau tidak ketemu.
Jawab :
*Flowchart untuk Pencarian Biner

*Langkah-langkah untuk metode Binary Search :


 Urutkan data dari indeks 0 sampai n-1 (kanan ke kiri) apakah ascending atau descending
 Cari posisi tengah pada data (posisi awal (indeks ke-0) + posisi akhir (indeks ke-n) / 2),
misalkan jika saat membagi mendapat hasil 6,5 maka abaikan ,5 gunakan 6
 Bandingkan data yang dicari dengan data ditengah
 Jika lebih kecil, maka pencarian dimulai dari posisi awal adalah posisi tengah -1
 Jika lebih besar, maka pencarian dimulai dari posisi awal adalah posisi tengah +1
 Jika data sama berarti data ditemukan

*Algoritma Pencarian Biner dapat dituliskan Sebagai Berikut :


awal := 1
akhir := n
while Awal ≤ Akhir do
tengah := [(awal + akhir) / 2]
if kunci(cari) = kunci(tengah)
then pencarian berakhir
else if kunci(cari) > kunci(tengah)
then awal := tengah + 1
else akhir := tengah – 1
end

Jawaban Dari Soal :


Diketahui nilai yang diinputkan : [ 45 55 60 72 78 ]
Ditanya : nilai yang dicari = 45 ( data 45 yang dicari ada dalam array) seperti pada gambar
dibawah ini :

Gambar 1.1 Data 45 yang dicari ada dalam array


Jika data yang dicari 75 maka data dicari tidak ada dalam array. Seperti gambar berikut :

Gambar 1.2 Data 75 yang dicari tidak ada dalam array

*Pseudocode :
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
int nilai[10],jumlah,i,j,cari,tukar,akhir,awal,tengah,tm;
cout<<"Masukkan jumlah data = ";
cin>>jumlah;
for(i=0;i<jumlah;i++)
{
cout<<"Nilai Mahasiswa ke - "<<(i+1)<<" = ";
cin>>nilai[i];
}
cout<<"Masukkan data yang akan anda cari :";
cin>>cari;
for(i=0;i<jumlah;i++)
{
for(j=i+1;j<jumlah;j++)
{
if (nilai[i]>nilai[j])
{
tukar=nilai[i];
nilai[i]=nilai[j];
nilai[j]=tukar;
}
}
}

tm=0;
akhir=jumlah;
awal=0;
while(akhir>=awal)
{
tengah=(akhir + awal)/2;
if(nilai[tengah]==cari)
{
tm++;
}
if(nilai[tengah]<cari)
{
awal=tengah+1;
}
else
{
akhir=tengah-1;
}
}
if (tm>0)
{
cout<<"Data " << cari << " yang dicari ada dalam array"<<endl;
}
else
{
cout<<"Data tidak ditemukan dalam array"<<endl;
}
getch();
}

You might also like