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

Postingan populer dari blog ini

LINEAR QUEUE

STACK/TUMPUKAN

TIPE DATA DAN HIRARKI DATA