3.1 Tujuan
1. Mengerti dan Memahami Metode Pencarian Data.
2. Dapat menggunakan Metode Pencarian Data dalam Program.
3. Memahami penggunaan metode Sorting.
3.3 Latihan
1. Latihan 1
a. Kode program
#include<iostream>
#include<conio.h>
using namespace std;
int cari (int data[], int n, int k)
{
int posisi, i, ketemu;
if (n<=0)posisi=-1;
else{ ketemu = 0; i=1;
while ((i<n-1)&&! ketemu) if (data[i] == k)
{
posisi=i; ketemu=1;
}
else i++;
if (!ketemu) posisi = -1;
}
return posisi;
}
int main()
{
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
int data [8];
int dicari;
cout <<"masukkan data : "; for(int a=0; a<8; a++)
{
cin>>data[a];
}
cout << "masukkan data yang dicari : "; cin >>dicari;
cout <<"posisi "<<dicari<<" dalam larik data
: "<<(cari(data, 8, dicari))<<"\n"; getch();
}
b. Flowchart
Gambar 3. 1 Flowchart Latihan 1
c. Output :
3.4 Tugas
1. Ubahlah script di bawah ini menggunakan bahasa C.
#include <iostream>
using namespace std;
int data[10],data2[10];
int n;
void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
void Input()
{
cout<<"Masukkan jumlah data = ";cin>>n;
cout<<"--------------------------------------"<<endl;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke-"<<(i+1)<<" = ";cin>>data[i];
data2[i] = data[i];
}
cout<<endl;
}
void Tampil()
{
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;}
void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j--)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
Tampil();
}
cout<<endl;
}
main()
{
cout<<"* Bubble Sort *"<<endl;
Input();
cout<<"Proses Bubble Sort,,,,,,,"<<endl;
cout<<"-------------------------------------"<<endl;
Tampil();
bubble_sort();
cout<<"-------------------------------------"<<endl;}
Jawab :
a. Kode program
#include <stdio.h>
int data[10], data2[10], n;
void tukar(int a, int b){
int t;
t=data[b];
data[b]=data[a];
data[a]=t;
}
void input(){
printf("Masukkan jumlah data: "); scanf("%d", &n);
printf("------------------------------------\n");
int i;
for(i=0; i<n; i++){
printf("Masukkan data ke- %d = ", i+1);
scanf("%d",&data[i]); data2[i]=data[i];
}
printf("\n");
}
void tampil(){
int i;
for(i=0; i<n; i++){
printf("%d ", data[i]);
}
printf("\n");
}
void bubblesort(){
int i, j;
for(i=1; i<n; i++){
for(j=n-1; j>=i; j--){
if(data[j]<data[j-1]){
tukar(j,j-1);
}
}
}
tampil();
}
main(){
input();
printf("Nama : DZIKRY ALFIAN\n");
printf("NIM : 32602000024\n\n");
printf("Proses Bubble Sort\n");
printf("--------------------\n");
tampil();
bubblesort();
}
b. Flowchart
Jawab :
a. Kode program
#include <iostream>
using namespace std;
int cari (int data[], int n,int k,int m)
{
int posisi,i,ketemu;
int pencacah=0;
if (n<=0)
posisi==1;
else
{
ketemu = 0;
i=0;
while ((i<n)&& ! ketemu)
{
if (data[i] == k)
{
pencacah++;
cout<<"Pencacah " <<pencacah <<endl;
if (pencacah==m)
{
cout<<"Ketemu"<<pencacah << endl;
posisi=1;
ketemu=1;
}
else
i++;
}
else
i++;
if (! ketemu);
posisi=-1;
}
}
return posisi;
}
int main()
{
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM: 32602000024\n\n";
int data [9]={10,9,4,6,3,4,2,5,0};
int dicari;
int ke;
dicari=4;
ke =2;
cout<<"Posisi " <<dicari<<" yang ke-"<<ke<<" dalam
larik data; " <<cari(data,8,dicari,ke)<<"\n";
ke =1;
cout<<"Posisi " <<dicari<<" yang ke-"<<ke<<" dalam
larik data; " <<cari(data,8,dicari,ke)<<"\n";
dicari=0;
ke=2;
cout<<"Posisi " <<dicari<<" yang ke-"<<ke<<" dalam
larik data; " <<cari(data,8,dicari,ke)<<"\n";
return 0;
}
b. Flowchart
d. Penjelasan
Pada gambar 3.9 merupakan hasil dari program diatas. Program
diatas merupakan program yang menampilkan pencacah 1, pencacah
2, posisi 4 yang ke 2 dalam larik data, pencacah 1, ketemu 1, posisi 4
yang ke-1 dalam larik data, posisi 0 yang ke-1 dalam larik data.
Header yang digunakan dalam program tersebut adalah iostream.
Iostream merupakan header untuk menjalankan perintah cin dan
cout. Main merupakan perintah pertama yang dijalankan oleh
program tersebut.
3. Ubahlah script pada Latihan 1 dengan metode Insertion Sort secara
descending.
Jawab :
a. Kode program
#include<iostream>
using namespace std;
int A[]={2,3,4,6,7,8,9,1,5,0};
int n=10;
void sortingdesc()
{
int i,j,temp;
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(A[j]>A[j-1]){
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
}
}
}
void show(){
int i;
for(i=0;i<n;i++){
cout<<A[i]<<" ";
}
}
int main(){
int pil;
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
cout<<"Program Shorting Array\n"<<endl;
cout<<"Sebelum di Urutkan = ";
show();
cout<<"\nData Descending tekan 1 dan enter\n\n";
cout<<"Input Pilihan Anda : ";
cin>>pil;
switch(pil)
{
case 1:
sortingdesc();
cout<<"\ndata setelah diurutkan\n\ndescending : ";
show();
break;
}
}
b. Flowchart
Gambar 3. 10 Flowchart Tugas 3
c. Output
Gambar 3. 11 Output Tugas 3
d. Penjelasan
Pada gambar 3.11 merupakan hasil dari proram diatas. Program
diatas merupakan program yang menghasilkan tampilan Program
Shorting Array, yang menghasilkan urutan nomor secara descending
dengan menggunakan intersection sort. Program diatas adalah
program yang menggunakan bahasa C++. Dengan menggunakan
header iostream. Iostream adalah header yang digunakan untuk
menjalankan perintah cin dan cout. Dan main adalah yang pertama
dijalankan oleh iostream.
4. Buatlah program pengurutan data dengan menggunakan semua metode
pengurutan untuk mengurutkan angka secara ascending dan
descending.
Jawab :
1. Descending
a. Kode program
#include<iostream>
#include<conio.h>
#include<iomanip>
#include<time.h>
#include<windows.h>
#define MAX 1
using namespace std;
int A[]={2,3,4,6,7,8,9,5,0};
int n=10;
void sortingdesc()
{
int i,j,temp;
for (i=0;i<n;i++){
for(j=n-1;j>i;j--){
if (A[j]>A[j-1]){
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
}
}
}
void sortingascen(){
int i,j,temp;
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(A[j]<A[j-1]){
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
}
}
}
void show(){
int i;
for(i=0;i<n;i++){
cout<<A[i]<<" ";
}
}
int bubblesort();
int selectionsort();
int insertionsort();
int pilihan, hitung,i;
char ulang, pilih;
char nx[10];
int data[MAX];
int data1[100];
int temp;
int pil;
int cek(char str[]){
int i, panjang;
panjang=strlen(str);
for(i=0;i<panjang;i++){
if((i==0)&&(str[i]=='-'))
i++;
if(!isdigit(str[i])){
cout<<"Input salah! Ulangi input!\n";
return 0;
}
}
return 1;
}
int main(){
int pil;
awal:
system("cls");
do{
system("cls");
int pil;
int n;
for(hitung=0;hitung<8;hitung++)
data1[hitung]=data[hitung];
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
cout<<"Program full metode sorting ";
cout<<endl<<endl;
cout<<"Masukan banyak data: ";
cin>>nx;
cout<<endl;
}
while(!cek(nx));
n=atoi(nx);
int data[100];
srand(time(NULL));
int i;
for(i=0;i<n;i++){
data[i]=rand()%n;
cout<<data[i]<<" ";
}
cout<<endl;
{
for(hitung=0;hitung<n;hitung++)
data1[hitung]=data[hitung];
cout<<"\nMetode sorting\n1. Bubble sort\n2. Selection
sort\n3. Insertion sort\n";
cout<<"Masukan pilihan: ";
cin>>pil;
cout<<"-------------------------------\n";
cout<<"pilihan pengurutan Ascending Descending[1/2]? ";
cin>>pil;
switch(pil){
case 1:
sortingascen();
cout<<"\nData setelah diurutkan\n\ascending: ";
show();
break;
case 2:
sortingdesc();
cout<<"\nData setelah diurutkan\n\ndescending: ";
show();
break;
}cout<<endl;
}cout<<endl;
}
int bubblesort(){
cout<<"================================= \n";
for(int i=0;i<n-1;i++)
for(int ii=0; ii<n-1;ii++)
if(data1[ii]>=data1[ii+1]){
temp=data1[ii];
data1[ii]=data1[ii+1];
data1[ii+1]=temp;
}
if(pilih=='a'){
cout<<"Menjalankan metode bubble sort denga pengurutan
Ascending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int iii=0; iii<n;iii++)
cout<<data1[iii]<<" ";
}
if(pilih=='d'){
cout<<"Menjalankan metode bubblesort dengan pengurutan
Descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int iii=0;iii<n-1;iii--)
cout<<data1[iii]<<" ";
}
cout<<"\n";
}
int selectionsort(){
cout<<"===============================\n";
int kecil;
for(int i=0;i<n;i++){
kecil=i;
for(int j=kecil+1;j<n;j++){
if(data1[kecil]>data1[j]){
kecil=j;
}
}
temp=data1[i];
data1[i]=data1[kecil];
data1[kecil]=temp;
}
if(pilih=='a'){
cout<<"Menjalankan metode Bubble sort dengan pengurutan
desceding ";
cout<<"\n\nHasil pengurutan: \n\n";
for(int iii=0;iii<n;iii++)
cout<<data1[iii]<<" ";
}
if(pilih=='d'){
cout<<"Menjalankan metode Bubble sort dengan pengurutan
descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int iii=0;iii<n-1;iii--)
cout<<data1[iii]<<" ";
}
cout<<"\n";
}
int insertionsort(){
cout<<"=================================\n";
int gap=n/2;
do{
int swap;
do{
swap=0;
for(int i=0;i<n-gap;i++)
if(data1[i]>data1[i+gap]){
int t=data1[i];
data1[i]=data1[i+gap];
data1[i+gap]=t;
swap=1;
}
}
while(swap);
}
while (gap=gap/2);
if(pilih=='a'){
cout<<"Menjalankan metode bubble sort dengan pengurutan
descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int i=0; i<n;i++)
cout<<data1[i]<<" ";
}
if(pilih=='d'){
cout<<"menjalankan metode bubble sort dengan pengurutan
descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int i=0;i<n-1;i--)
cout<<data1[i]<<" ";
}
cout<<endl;
return 0;
}
b. Flowchart
a. Kode program
#include<iostream>
using namespace std;
main()
{
int nilai ['n'], temp,n;
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
cout<<"Banyak data: ";
cin>>n;
cout<<endl;
for(int a=1;a<=n;a++){
cout<<"nilai["<<a<<"]: ";
cin>>nilai[a];
}
cout<<"\n\n";
cout<<"data sebelum diurutkan\n";
for(int a=1;a<=n;a++){
cout<<nilai[a]<<" ";
}
for(int a=n-1;a>=1;a--){
for(int b=1;b<=a;b++){
if(nilai[b]>nilai[b+1]){
temp=nilai[b+1];
nilai[b+1]=nilai[b];
nilai[b]=temp;
}
}
}
cout<<"\n\nData setelah durutkan(Ascending)\n";
for(int a=1;a<=n;a++){
cout<<nilai[a]<<" ";
}
}
b. Flowchart
3.5 Kesimpulan
Pada BAB III ini kita mempelajari tentang sorting dan searching.
Sorting merupakan suatu proses untuk menyusun kembali humpunan
obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu
algoritma untuk meletakkan kumpulan elemen data kedalam urutan
tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.
Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu
proses sorting:
1. Urut naik (ascending) mengurutkan dari data yang mempunyai nilai
paling kecil sampai paling besar.
2. Urut turun (descending) Mengurutkan dari data yang mempunyai nilai
paling besar sampai paling kecil.