Anda di halaman 1dari 11

Nama : Fransiskus Pito Tenawahang

NIM : 201011401207
Kelas : 02TPLP019
Mata Kuliah : Algoritma & Pemrograman II

SOAL !
1. Tulislah algoritma dan program C++ untuk pencarian sequensial versi 1.
Pencarian dilakukan dalam sebuah fungsi yang mengembalikan indek array
tempat data yang dicari berada.
2. Tulislah algoritma dan program C++ untuk pencarian sequensial versi 2.
Pencarian dilakukan dalam sebuah fungsi yang mengembalikan indek array
tempat data yang dicari berada.
3. Tulislah algoritma dan program C++ untuk pencarian sequensial dengan data
yang sudah terurut menurun.
4. Tulislah algoritma dan program C++ untuk pencarian metode bagi dua dengan
array terurut naik.
JAWABAN!
1. Algoritma dan program C++ untuk pencarian sequensial versi 1. Pencarian
dilakukan dalam sebuah fungsi yang mengembalikan indek array tempat data
yang dicari berada.

 Algoritma :

procedureSeqSearch (input L : LarikInt,


input n : integer,
input n : integer,
output idx : integer)

DEKLARASI
i : integer
DESKRIPSI
i←0
while(i < n) and(L[i] < x) do
i←i+1
end while
if L[i] = x then
idx ← i
else
idx ← -1
endif

 Source code :
#include<iostream>
using namespace std;
void SeqSearch(int Data[], int n, int x, int *idx);
main()
{
cout<<"PENCARIAN DENGAN SEQUENTIAL SEARCH VERSI
1"<<endl;
cout<<"
"<<endl;

int Data[]={23,26,30,50,55,65,69,78,80,90};
int idx,x,i,jmlDat=10;
cout<<"Elemen Array : ";
for(i=0;i<jmlDat;i++)
cout<<Data[i]<<" ";
cout<<endl;
cout<<"Masukan data yang akan dicari ?: ";
cin>>x;
SeqSearch(Data,jmlDat,x,&idx);
if(idx!=-1)
cout<<"\nData yang dicari berada pada indek
"<<idx<<endl;
else
cout<<"Data yang dicari tidak ada dalam array"<<endl;
}
void SeqSearch(int Data[],int n,int x, int *idx)
{
int i=0;
while(i<n-1 && Data[i]<x)i++;
if(Data[i]==x)*idx=i;
else *idx=-1;
}

 Output :
2. Algoritma dan program C++ untuk pencarian sequensial versi 2. Pencarian
dilakukan dalam sebuah fungsi yang mengembalikan indek array tempat data
yang dicari berada

 Algoritma :

procedureSeqSearch (input dataku : LarikInt,


input caridata, i, flag = 0 : integer,
input simpan index : LarikInt,
output jum-index = 0 : integer)
DEKLARASI
i : integer
DESKRIPSI
i←0
while(i < n) and (dataku[i] < x) do
i←i+1
while (dataku[i]==caridata)
flag=1;
simpanindex[jum_index] = i;
jum_index++;
break;
if flag[i] = x then
jum-index ← i
else
jum-index ← -1
return

 Source code :
#include <iostream>
using namespace std;
#include <conio.h>
#include <iomanip>

int main()
{
int dataku[10] = {7,9,2,5,15,2,5,6,13,11};
int caridata, i, flag = 0;
int simpanindex[10];
int jum_index=0;

cout<<"PENCARIAN DENGAN SEQUENTIAL SEARCH


VERSI2"<<endl;
cout<<"
"<<endl;
cout<<"Data : ";
for(int n=0; n<10; n++)
cout<<setw(4)<<dataku[n];
cout<<endl;
cout<<"\nMasukkan data yang ingin Anda cari : ";
cin>>caridata;
//cari dengan metode sequential search() for(i
= 0; i<10; i++)
{
while(dataku[i]==caridata)
{
flag = 1;
simpanindex[jum_index] = i;
jum_index++;
break;
}
}
//cetak hasil
if(flag==1)
{
for( int y = 0; y < jum_index; y++ )
cout<<"Data ditemukan pada index ke"
<<simpanindex[y]<<endl;
}
else
cout<<"Data tidak ditemukan"<<endl; return
0;
}

 Output :
3. Algoritma dan program C++ untuk pencarian sequensial dengan data yang
sudah terurut menurun.

 Algoritma :

procedureSeqSearch (input i : integer


input n : integer,
input cari,ketemu=0 : integer
output ketemu : integer)
DEKLARASI
i : integer
DESKRIPSI
i←0
while(i < n) and (A[i] < x)
i←i+1
if (A[i]==cari)
read ketemu=1;
write "Data Ditemukan Pada Indeks Ke-" read i
if (ketemu==0);
write "Data tidak ditemukan";
getch;

 Source code :
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i;
int n;
int cari,ketemu=0;
int A[100];
cout<<"PROGRAM SEARCHING LINIER TERURUT MENURUN\n";
cout<<" "<<endl;
cout<<"Masukan Banyak Data : ";
cin>>n;
cout<<endl;
for (i=1;i<=n;i++)
{
cout<<"Masukan Data Ke-"<<i<<" : ";
cin>>A[i];
}
cout<<endl;
cout<<"Input Bilangan yang dicari : ";
cin>>cari;
cout<<" "<<endl;
cout<<endl;
for(i=0;i<=n;i++)
{
if (A[i]==cari)
{
ketemu=1;
cout<<"Data Ditemukan Pada Indeks Ke-"<<i;
}
}
if (ketemu==0)
{
cout<<"Data tidak ditemukan";
}
getch();
}

 Output :
4. Algoritma dan program C++ untuk pencarian metode bagi dua dengan array
terurut naik.

 Algoritma :

{
int data[7] = {larik}
int cari;
void selection_sort()
while((L <= R) && (!ditemukan))
{
int temp, min, i, j;
for(i=0; i<7;i++)
{
min = i;
for(j = i+1; j<7; j++)
{
if(data[j]<data[min])
{
min=j;
}
}
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
void binarysearch() //searching
{
int awal, akhir, tengah, b_flag = 0;
awal = 0;
akhir = 7;
while (b_flag == 0 && awal<=akhir)
{
tengah = (awal + akhir)/2;
if(data[tengah] == cari)
{
b_flag = 1;
break;
}
else if(ditemukan)
awal = tengah + 1;
else
akhir = tengah -1;
}
if(ditemukan)
else
}
int main()
{
for(int x = 0; x<7; x++) //tampilkan data awal
cout<<setw(3)<<data[x];
cout<<endl;
}
//urutkan data dengan selection sort
selection_sort();
//tampilkan data setelah diurutkan
for(int x = 0; x<7;x++)
cout<<setw(3)<<data[x];
cout<<endl;
binarysearch();
return 0;
}

 Source code :

#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
int data[7] = {1, 8, 2, 5, 4, 9, 7};
int cari;
void selection_sort()
{
int temp, min, i, j;
for(i=0; i<7;i++)
{
min = i;
for(j = i+1; j<7; j++)
{
if(data[j]<data[min])
{
min=j;
}
}
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
void binarysearch()
{
//searching
int awal, akhir, tengah, b_flag = 0;
awal = 0;
akhir = 7;
while (b_flag == 0 && awal<=akhir)
{
tengah = (awal + akhir)/2;
if(data[tengah] == cari)
{
b_flag = 1;
break;
}
else if(data[tengah]<cari)
awal = tengah + 1;
else
akhir = tengah -1;
}
if(b_flag == 1)
cout<<"\nData ditemukan pada index ke-
"<<tengah<<endl;
else
cout<<"\nData tidak ditemukan\n";
}
int main()
{
cout<<"\t 'BINARY SEARCH'"<<endl;
cout<<"\t====================="<<endl;
cout<<"\nData : ";
//tampilkan data awal
for(int x = 0; x<7; x++)
cout<<setw(3)<<data[x];
cout<<endl;
cout<<"\nMasukkan data yang ingin Anda cari : ";
cin>>cari;
cout<<"\nData diurutkan : ";
//urutkan data dengan selection sort
selection_sort();
//tampilkan data setelah diurutkan
for(int x = 0; x<7;x++)
for(int x = 0; x<7;x++)
cout<<setw(3)<<data[x];
cout<<endl;
binarysearch();
return 0;
}
 Output :

Anda mungkin juga menyukai