UTS Struktur Data_Juwono
UNIVERSITAS PAMULANG
UTS Struktur Data
Nama : Juwono
A. SOAL 01
1. Pengurutan menggunakan metode Bubble Sort secara
Ascending :
Fungsi :
//mengurutkan data menggunakan
metode bubble sort secara ascending
//Nama : Juwono
#include<iostream>
#include<conio.h>
using namespace std;
void bubblesort(int data[],int
n);
main(){
cout<<"\t\t
\tPengurutan Data Bubble Sort secara Ascending"<<endl;
cout<<endl;
int
i;
int
n=7;
int
data[]={5,2,21,4,9,16,13,3};
cout<<"Data
sebelum diurutkan :"<<endl;
for(i=0;i<=n;i++)
cout<<data[i]<<"
";
cout<<endl;
cout<<"___________________________"<<endl;
bubblesort(data,n);
cout<<"Data
setelah diurutkan :"<<endl;
for(i=0;i<=n;i++)
cout<<data[i]<<"
";
cout<<endl;
}
void bubblesort(int array1[], int
n){
int
i,k,tmp;
for(i=1;i<=n;i++){
for(k=n;k>=i;k--){
if(array1[k]<array1[k-1]){
tmp=array1[k];
array1[k]=array1[k-1];
array1[k-1]=tmp;
}
}
}
}
Hasil :
2. Program Pengurutan menggunakan metode Selection Sort secara
Descending :
Fungsi :
//mengurutkan data menggunakan
metode selection sort secara descending
//Nama : Juwono
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
cout<<"\t\t
\tPengurutan Data Selection Sort secara Descending"<<endl;
cout<<"\t\t
\t================================================\n";
int
i,j,Imaks,maks,temp;
int
L[8]={5,2,21,4,9,16,13,3};
for
(i=7;i>=1;i--){
Imaks=0;
maks=L[0];
for
(j=1;j<=i;j++){
if
(L[j]<maks){
Imaks=j;
maks=L[j];
}
}
temp=L[i];
L[i]=maks;
L[Imaks]=temp;
}
cout<<"\nData
Sebelum diurutkan : "<<endl;
int data[]={5,2,21,4,9,16,13,3};
for(i=0;i<=7;i++)
cout<<data[i]<<"
";
cout<<endl;
cout<<"------------------------"<<endl;
cout<<"Data
setelah diurutkan :"<<endl;
for
(i=0;i<=7;i++){
cout<<L[i]<<"
";
}
cout<<endl;
getch();
}
Hasil :
3. Pengurutan menggunakan metode Insertion Sort secara
Descending :
Fungsi :
//mengurutkan data menggunakan
metode insertion sort secara descending
//Nama : Juwono
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
void insertion (int data[])
{
int temp,j;
for(int i=1;i<8;i++)
{
temp=data[i];
j=i-1;
while(data[j]<temp && j>=0)
{
data[j+1]=data[j];
j--;
}
data[j+1]=temp;
}
}
int main()
{
//deklarasi variabel
int data [8]={5,2,21,4,9,16,13,3};
cout<<"\t\t \tPengurutan Data
Insertion Sort secara Descending"<<endl;
cout<<"\t\t
\t================================================\n";
cout<<endl;
cout<<"\nData Sebelum diurutkan
: "<<endl;
cout<<"------------------------\n";
for(int n=0;n<8;n++)
cout<<data[n]<<"
";
cout<<endl;
cout<<"\nData Setelah
diurutkan\n";
cout<<"------------------------\n";
insertion(data);
for(int x=0;x<8;x++)
cout<<data[x]<<"
";
cout<<endl;
getch();
}
Hasil :
B. SOAL 02
1. Diketahui suatu array 3 dimensi yang dideklarasikan dengan A[-2…2, 1…4, 3…6]. Setiap elemen terdiri dari 6 byte. Alamat elemen pertama FC8B H:
Tentukan :
A. Jumlah elemen:
B. Jumlah byte seluruhnya
C. Alamat A[1,3,5] atau @A[1,3,5]?
C1 Row Major Order (RMO)
C2 Column Major Order (CMO)
Jawab :
A. Jumlah elemen:
Jumlah blok : (2 – (-2)) + 1 = 5 blok
Jumlah baris : (4 – 1) + 1 = 4 Baris
Jumlah kolom : (6 – 3) + 1 = 4 kolom
Jumlah elemen : 5 x 4 x 4 = 80 Elemen
B. Jumlah Byte : 80 x 6 = 480 Byte
C. C1 Row Major Order (RMO) ;
Pindah 3 blok, setiap blok terdiri dari 16 elemen = 3 x 16 = 48 elemen
Pindah 2 baris, setiap baris terdiri dari 4 elemen = 2 x 4 = 8 elemen
Pindah 2 kolom = 2 elemen
Jumlah Pindah = 58 elemen
= 58 x 6 byte
= 348 Byte
= 15C
Jadi, alamat @A[1,3,5] = FC8B + 15C = FDE7
C. C2 Column Major Order (CMO) ;
Pindah 3 blok, setiap blok ada 16 elemen = 3 x 16 = 48 elemen
Pindah 2 baris = 2 elemen
Pindah 2 kolom, setiap kolom 4 elemen = 2 x 4 = 8 elemen
Jumlah pindah = 58 elemen
= 58 x 6 byte
= 348 Byte
= 15C
Jadi, alamat @A[1,3,5] = FC8B + 15C = FDE7
2. Diketahui suatu array 3 dimensi yang dideklarasikan dengan A[2][5][6] pada bahasa C++. Setiap elemen terdiri 4 byte. Alamat elemen pertama BC9A H.
Tentukan :
A. Jumlah elemen:
B. Jumlah byte seluruhnya
C. Alamat A[1,3,5]?
C1 Row Major Order (RMO)
C2 Column Major Order (CMO)
Jawab :
A. Jumlah elemen:
Jumlah blok : 2 Blok
Jumlah baris : 5 Baris
Jumlah kolom : 6 Kolom
Jumlah elemen : 2 x 5 x 6 = 60 elemen
B. Jumlah Byte : 60 x 4 byte = 240 byte
C. C1 Row Major Order (RMO) ;
Pindah 1 blok, setiap blok terdiri dari 30 elemen = 1 x 30 = 30 elemen
Pindah 3 baris, setiap baris terdiri dari 6 elemen = 3 x 6 = 18 elemen
Pindah 5 kolom = 5 elemen
Jumlah Pindah = 53 elemen
= 53 x 4 byte
= 212 byte
= D4
Jadi, alamat @A[1,3,5] = BC9A + D4 = BD6E
C. C2 Column Major Order (CMO) ;
Pindah 1 blok, setiap blok ada 30 elemen = 1 x 30 = 30 elemen
Pindah 3 baris = 3 elemen
Pindah 5 kolom, setiap kolom 5 elemen = 5 x 5 = 25 elemen
Jumlah pindah = 58 elemen
= 58 x 4 byte
= 232 byte
= E8
Jadi, alamat @A[1,3,5] = BC9A + E8 = BD82
C. SOAL 03
Program Pengurutan/Sorting ;
Fungsi :
//Nama : Juwono
//NIM : 181011450646
#include<time.h>
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;
int main() {
int pil;
cout << "======= Program Sorting (Bubble, Insertion, Selection) =========="<<endl<<endl;
cout << "1. Bubble sort" <<endl;
cout << "2. Insertion sort" <<endl;
cout << "3. Selection sort" <<endl<<endl;
cout << "==============================="<<endl<<endl;
cout << "Masukan pilihan anda = "; cin >> pil;
switch(pil) {
////////////////////////////////////
//// Bubble start /////////////
////////////////////////
case 1:
system("cls");
cout << endl;
cout << "Bubble sort"<<endl;
cout << "=============="<<endl;
int t1,t2;
int hold;
int array[5];
cout<<"Masukan 5 angka :"<<endl;
for(int i=0; i<5; i++) {
cout << " angka ke " <<i+1 <<" = ";cin>>array[i];
}
cout<<endl;
cout<<endl;
t1=GetTickCount();
cout<<"Sebelum di sortir = ";
for(int j=0; j<5; j++) {
cout<<array[j];
cout<<" ";
}
cout<<endl;
cout <<endl<< "Urutan program"<<endl;
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
if(array[j]<array[j+1]) {
hold=array[j];
array[j]=array[j+1];
array[j+1]=hold;
for(int i=0; i<5; i++) {
cout<<array[i]<<" ";
}
cout<<endl;
}
}
}
cout<<endl;
cout<<"Setelah di sortir = ";
for(int i=0; i<5; i++) {
cout<<array[i]<<" ";
}
cout<<endl;
t2=GetTickCount();
cout << endl <<"Lama proses = " << (int)(t2 - t1) << " ms";
cout<<endl;
break;
//////////////////////////////////////////////////////////
/////// Insertion start /////////
////////////////////////////////////////////////
case 2:
system("cls");
cout << "Insertion sort";
cout <<endl<<"============="<<endl;
cout<<endl;
int t3,t4;
int Key;
int array1[5];
cout<<"Masukan 5 angka : "<<endl;
for(int i=0; i<5; i++) {
cout << " angka ke " <<i+1 <<" = ";cin>>array1[i];
}
cout<<endl;
t3=GetTickCount();
cout<<"Angka sebelum di sortir = ";
for(int j=0; j<5; j++) {
cout<<array1[j]<<" ";
}
cout<<endl;
cout<<endl<< "Data proses "<<endl;
for(int j=1 ; j < 5 ; j++) {
Key = array1[j];
int i = j-1;
while(i >= 0 && array1[i] < Key) {
array1[i + 1] = array1[i];
i = i - 1;
}
array1[i + 1] = Key;
for(int l=0; l<5; l++) {
cout<<array1[l]<<" ";
}
cout<<endl;
}
cout<<endl<<"Angka setelah disortir = ";
for(int i=0; i<5; i++) {
cout<<array1[i]<<" ";
}
t4=GetTickCount();
cout << endl<<endl <<"Lama proses = " << (int)(t4 - t3) << " ms";
cout<<endl;
break;
////////////////////////////////////////////////////////
////////////// Selection start /////////////////////
/////////////////////////////////////
case 3:
system("cls");
cout << "Selection sort";
cout <<endl<< "================="<<endl<<endl;
int t5,t6;
int arr[5];
int mini,temp;
cout<<"masukan 5 angka ="<<endl;
for(int i=0; i<5; i++) {
cout << " angka ke " <<i+1 <<" = ";cin>>arr[i];
}
t5=GetTickCount();
cout<<endl;
cout<<"Angka sebelum di sortir = ";
for(int j=0; j<5; j++) {
cout<<arr[j]<<" ";
}
for(int r1=0;r1<4;r1++) {
mini=r1;
for(int r2=r1+1; r2<5; r2++)
if(arr[r2]>arr[mini])
mini=r2;
if(mini !=r1) {
temp=arr[r1];
arr[r1]=arr[mini];
arr[mini]=temp;
}
}
cout<<endl;
cout<<endl;
cout<<"Setelah di sortir = ";
for(int q=0; q<5; q++) {
cout<<arr[q]<< " " ;
}
t6=GetTickCount();
cout << endl<<endl <<"Lama proses = " << (int)(t6 - t5) << " ms";
cout<<endl;
break;
//////////////////////////////////////////
////// PILIHAN TIDAK ADA /////////
//////////////////////////////////////////
default:
system("cls");
cout << "Pilihan tidak ada";
break;
}
getch();
}
Hasil :
Sekian, Terima kasih.
Komentar
Posting Komentar