1. Perhatikan bahwa Anda dapat
melewatkan banyak nomor dalam daftar dan masih berada dalam urutan menaik yaitu
sebagai berikut :
3 4 6 17 21 24 32 43
Angka-angka ini meningkat saat Anda bergerak melalui daftar dari kiri ke
kanan. Bangunlah sebuah array yang berisi angka-angka tersebut ? Kemudian lakukan
pencarian biner (Binary Search) untuk memeriksa apakah angka yang kita cari ada dalam daftar
array tersebut ?
Source code :
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int banyakData,
cariData, posisi=0;
bool ketemu = false;
cout << "Banyak data
: ";
cin >> banyakData;
int data[banyakData];
for(int ulang=0;
ulang<banyakData; ulang++)
{
cout <<"Berikan
Data ke["<<ulang<<"] : ";
cin >> data[ulang];
}
cout <<"Data yang
akan di cari posisinya: ";
cin >> cariData;
for(int ulang=0; ulang<banyakData;
ulang++)
{
if(cariData == data[ulang])
{
posisi = ulang;
ketemu = true;
break;
}
}
if(ketemu)
{
cout<<"Data
"<<cariData<<" ditemukan di posisi :
"<<posisi<<endl;
cout<<"Terimakasih"<<endl;
}
else
{
cout<<"Data yang
anda berikan"<<endl;
cout<<"Tidak
tertera pada data Array"<<endl;
}
return 0;
}
2. Jika terdapat
sebuah array yang elemennya berindeks 1 sampai dengan 15. Masing-masing elemen
berturut-turut berisi nilai sebagai berikut:
1, 2, 8, 25, 30, 49, 50, 55, 60, 61,
68, 70, 72, 84, 90.
a. Jelaskan langkah-langkah pencarian
nilai 49 dalam array tersebut dengan metode pencarian biner, sehingga
menghasilkan indeks elemen array tempat ditemukannya nilai tersebut.
b. Jelaskan langkah-langkah pencarian
nilai 71 dalam array tersebut dengan metode pencarian biner, sehingga
menghasilkan kesimpulan bahwa nilai tersebut tidak berhasil ditemukan.
Source code
:
#include
<cstdlib>
#include
<iostream>
using
namespace std;
void
output(int a[14],int awal,int akhir,int tengah,int cari){
while(awal<=akhir){
tengah=(awal+akhir)/2;
if(cari>a[tengah]){
awal=tengah+1;
}else
if(cari<a[tengah]){
akhir=tengah-1;
}else{
awal=akhir+1;
}
}
if(cari==a[tengah]){
cout<<"Data
di temukan indeks ke-"<<tengah<<endl;
}else{
cout<<"Data
tidak di temukan"<<endl;
}
}
int main(int
argc, char *argv[])
{
int a[15]={(1),(2),(8),(25),(30),(49),(50),(55),(60),(61),(68),(70),(72),(84),(90)};
int cari,awal,akhir,tengah;
for(int i=0;i<15;i++){
cout<<a[i]<<"
";}
cout<<"\nMasukan data
yang di cari = ";
cin>>cari;
awal=0;akhir=15;
output(a,awal,akhir,tengah,cari);
system("pause");
return 0;
}
3. Urutkan deret angka berikut dengan
bubble sort :
7 4 5 8 10
Tuliskan
hasil tiap langkah (step).
Source
code :
#include
<iostream>
#include
<conio.h>
/* run
this program using the console pauser or add your own getch,
system("pause") or input loop */
using
namespace std;
int main()
{ int a,k,c,d,g;
k=5;
int b[5];
cout<<"Bubble sort adalah salah
satu metode sorting atau mengurutkan dari data terkecil ke data terbesar
"<<endl<<endl;
for(a=0;a<k;a++)
{
cout<<"Masukkan nilai
"<<a+1<<" : ";
cin>>b[a];
}
for(a=0;a<k-1;a++)
{
for(d=a+1;d<k;d++)
{
c=a;
if(b[c]<b[d])
{
c=d;
}
g=b[c];
b[c]=b[a];
b[a]=g;
}
}
cout<<"\n setelah diurutkan akan
menjadi : \n";
for(a=0;a<k;a++)
{
cout<<b[a]<<"
\n";
}
return 0;
}
4. Periksalah daftar 6 angka di bawah
ini :
14 32 5 12 61 7
Ketika
Anda melihat daftar tersebut, Anda segera dapat melihat bahwa 5 adalah angka terkecil
didaftar. Tugas ini lebih sulit untuk komputer. Jadi untuk itu harus dibuat
program untuk menemukan nilai minimum tersebut. Buatlah program selection sort
dan lakukan sorting secara manual (step by step) !
Source
code :
#include
<iostream>
#include
<conio.h>
/* run
this program using the console pauser or add your own getch,
system("pause") or input loop */
int main()
{
int data [50];
int a,b;
int max,min;
//
masukan untuk batas
printf("Banyak
Bilangan: ");scanf ("%d",&a);
//pengulangan
untuk memasukkan data ke dalam array
for
(b=1;b<=a;b++)
{
printf("\nbilangan ke-%d:
",b);scanf("%d",&data [b]);
}
//mencari
nilai terbesar dan terkecil di array dengan looping
max=data[1];
min=data[1];
for (b=1;b<=a;b++)
{
if (data[b]>=max)
{
max=data[b];
}
else if (data[b]<=min)
{
min=data[b];
}
}
printf("\n\nnilai
tertinggi\t:%d", max);
printf("\n\nnilai
terkecil\t:%d", min);
getch();
return 0;
}
5 Urutkan deret angka berikut dengan
selection sort dan tuliskan hasil tiap langkah (step) :
21 16 25 8 19 4 1
Sour code :
#include <iostream>
#include <iomanip>
#include <conio.h>
/* run this program using
the console pauser or add your own getch, system("pause") or input
loop */
using namespace std;
template <class T>
void s_sort(T a[],int n)
{
int i,j,t;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[j]<a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}}}
}
int main()
{
int a[100],i,n;
cout<<"Masukan jumlah elemen :
";
cin>>n;
cout<<"Masukan elemen - elemen
tersebut :";
for(i=0;i<n;i++)
{
cout<<"\n Enter : ";
cin>>a[i];
}
s_sort(a,n);
cout<<"Setelah di sorting
:";
for(i=0;i<n;i++)
{
cout<<a[i]<<" , ";
}
return 0;
}
Emoticon Emoticon