Anda di halaman 1dari 7

Laporan Praktikum Desain Analisis Algoritma 4

Soal 1
1. Implementasikan algoritma Selection Sort berikut, dan lengkapi dengan membuat fungsi
MAIN untuk menjalankan masing-masing fungsi tersebut.
1. Pertama-tama jangan lupa menggunakan template dasar untuk c++

#include <iostream>
using namespace std;
int main()
{
return 0;
}

2. Penggunaan parameter fungsi untuk mencetak data menggunakan void

void cetak (int A[], int n) {


}

3. Isi dalam fungsi cetak, melakukan perulangan dan mencetak array

for (int i = 0; i < n; i++) {


cout << A[i] << "\t ";
}

4. Penggunaan parameter fungsi untuk melakukan swap data menggunakan void

void swap (int &a, int &b) {


}

5. Isi dalam fungsi swap, melakukan pendeklarasian variabel dan pengimplementasiannya

int temp;
temp = a;
a = b;
b = temp;

6. Penggunaan parameter fungsi untuk menjalankan selection sort menggunakan

void

void selectionSort(int A[], int n) {


}

7. Isi dalam fungsi, melakukan pendeklarasian variabel, percabangan perulangan,

perbandingan, kemudian diswap dan mencetak hasil akhir perurutan


int i, j, min_idx, tukar=0; //mendeklarasikan variabel

for(i=0; i<n-1; i++){ //melakukan percabangan perulangan


min_idx = i;
for(j=i+1; j<n; j++)
if(A[j] < A[min_idx]) //menggunakan perbandingan untuk selection sort
min_idx = j;
swap(A[i], A[min_idx]); //pemanggilan fungsi swap
}
for(i=0; i<n; i++) { //melakukan perulangan
cout << A[i] << "\t"; //untuk mencetak hasil selection sort
}}

8. Pendeklarasian variable array

int data[8] = {22, 12, 3, 25, 8, 30, 9, 10};

int n = 8;

9. Pemanggilan fungsi yang sudah dibuat

cout << "Data awal: " << endl;

cetak(data, n); //memanggil fungsi mencetak data

cout << "Hasil selection sort: " << endl;

selectionSort(data, n);

Soal 2
2. Hitung ada berapa kali perintah perbandingan dan pertukaran dilakukan jika diberikan
sederet angka berikut 22, 12, 3, 25, 8, 30, 9, 10
1. Pendeklarasian variabel dalam fungsi selection sort

int tukar = 0;
2. Proses yang akan dijalankan

tukar++;
3. Menampilkan seberapa banyak dilakukan pertukaran

cout << "\nPertukaran yang dilakukan sebanyak: " << tukar << endl;

Output :
Data : 22 12 3 25 8 30 9 10
Proses Selection Sort (Ascending)
Iterasi 1 :
22 12 3 25 8 30 9 10 → (Apakah 22 nilai yang paling kecil?)
3 12 22 25 8 30 9 10 → (Tidak. 22 ditukar dengan 3)

Iterasi 2 :
3 12 22 25 8 30 9 10 → (Apakah 12 nilai yang paling kecil?)
3 8 22 25 12 30 9 10 → (Tidak. 12 ditukar dengan 8)

Iterasi 3 :
3 8 22 25 12 30 9 10 → (Apakah 22 nilai yang paling kecil?)
3 8 9 25 12 30 22 10 → (Tidak. 22 ditukar dengan 9)

Iterasi 4 :
3 8 9 25 12 30 22 10 → (Apakah 25 nilai yang paling kecil?)
3 8 9 10 12 30 22 25 → (Tidak. 25 ditukar dengan 10)

Iterasi 5 :
3 8 9 10 12 30 22 25 → (Apakah 12 nilai yang paling kecil?)
3 8 9 10 12 30 22 25 → (Iya)
Iterasi 6 :
3 8 9 10 12 30 22 25 → (Apakah 30 nilai yang paling kecil?)
3 8 9 10 12 22 30 25 → (Tidak. 30 ditukar dengan 22)
Iterasi 7 :
3 8 9 10 12 22 30 25 → (Apakah 30 nilai yang paling kecil?)
3 8 9 10 12 22 25 30 → (Tidak. 30 ditukar dengan 25)

Data Setelah di sorting ialah sebagai berikut :


Data : 3 8 9 10 12 22 25 30

Soal 3
3. Tentukan T(n) dari algoritma Selection Sort.
T(n) = (c32+c42)n + (c1+c2+c32-c42)n – (c2-c3)
2

T(n) = c1n + c2n + c3


2

T(n) = n2

Soal 4
4. Hitung berapa lama algoritma dijalankan dalam millisecond menggunakan fungsi time()
atau clock()
1. Pertama-tama jangan lupa menggunakan header untuk menghitung waktu

#include <ctime>

2. Penggunaan parameter fungsi untuk menghitung selisih antara dua waktu


double diffclock (clock_t clock1, clock_t clock2) {
}

3. Isi dalam fungsi, yaitu:

double diffticks = clock2 – clock1;


double diffms = diffticks / (CLOCKS_PER_SEC / 1000);
//proses yang akan dijalankan
return diffms; //mereturn fungsi karna bukan fungsi void

4. Memulai dan mengakhiri memanggil waktu dari sistem

clock_t start = clock();


clock_t end = clock();

5. Memanggil fungsi yang telah diimplentasikan dalam fungsi main

cout << "\n" << diffclock (start, end) << "Milisecond";

Berikut ini adalah source code lengkapnya, beserta komentar-komentarnya:


Output :

Anda mungkin juga menyukai