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 :
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 :
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;
Output :
3. Algoritma dan program C++ untuk pencarian sequensial dengan data yang
sudah terurut menurun.
Algoritma :
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 :