Homework 9 Praktikum Pemrograman
Homework 9 Praktikum Pemrograman
NIM : 23/511982/PA/21861
HOMEWORK 9
SORTING
1. (20 poin) Buatlah suatu program yang berguna untuk menghitung median dari suatu
array yang berisikan N bilangan bulat!
Jawab :
Source Code
#include <iostream>
using namespace std;
int main () {
int n;
cout << "Masukkan jumlah banyaknya data : ";
cin >> n;
sorting(arr, n);
cout << "Data yang sudah diurutkan : ";
float med;
if (n%2 == 0) {
int mid1 = n/2 - 1;
int mid2 = n/2;
med = (float) (arr[mid1] + arr[mid2])/2;
}
else {
int mid3;
mid3 = n/2;
med = arr[mid3];
}
cout << "Median dari data yang diberikan : " << med;
return 0;
}
Hasil Pemrograman
// c ascending-insertion sort
void insertSort_Asc(int arr[], int x) {
int a, temp;
for (int i=1; i<x; i++){
a = i-1;
temp = arr[i];
// d descending-insertion sort
void insertSort_Desc(int arr[], int x) {
int a, temp;
for (int i=1; i<x; i++){
a = i-1;
temp = arr[i];
// e ascending-selection sort
void selectSort_Asc(int arr[], int x) {
int temp;
for (int i=0; i<x; i++){
int min = i;
for (int j=i+1; j<x; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
for (int i=0; i<x; i++) {
cout<< arr[i] << " ";
}
cout << endl;
}
// f descending-selection sort
void selectSort_Desc(int arr[], int x) {
int temp;
for (int i=0; i<x; i++){
int min = i;
for (int j=i+1; j<x; j++) {
if (arr[j] > arr[min]) {
min = j;
}
}
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
for (int i=0; i<x; i++) {
cout<< arr[i] << " ";
}
cout << endl;
}
int main () {
cout << "PROGRAM SORTING" << endl;
int n;
cout << "Masukkan jumlah banyaknya data : ";
cin >> n;
int data[n];
srand(time(0));
for (int i=0; i<n; i++) {
data[i] = rand()%100;
}
int metode;
cout << "Metode sorting yang dipilih (contoh : 1) :
";
cin >> metode;
10000 data
100000 data
Running Time
Banyak Data Running Time
(seconds)
100 3.539
1000 6.653
10000 7.538
100000 34.23
10000 data
100000 data
Running Time
Banyak Data Running Time
(seconds)
100 4.249
1000 4.298
10000 7.19
100000 36.04
1000 data
10000 data
100000 data
Running Time
Banyak Data Running Time
(seconds)
100 3.982
1000 5.435
10000 6.719
100000 41.9
10000 data
100000 data
Running Time
Banyak Data Running Time
(seconds)
100 2.373
1000 3.172
10000 7.664
100000 42.1
Coba gunakan 100 data, 1000 data, 10000 data, dan 100000 data. Untuk setiap
metode sort, tuliskan running time-nya. Buatlah tabel yang menunjukkan hasilnya.
3. (40 poin) Buatlah program untuk mengimplementasikan fungsi STL C++ sort(). Coba
gunakan 100 data, 1000 data, 10000 data, dan 100000 data. Bandingkan running-
timenya dengan hasil yang ada di soal nomor 1.
Jawab :
a. Ascending
Source Code
#include <bits/stdc++.h>
using namespace std;
int num[n];
srand(time(0));
for (int i=0; i<n; i++) {
num[i] = rand();
}
cout << "\nData sebelum sorting : ";
printNum(num, n);
clock_t start, end;
start = clock ();
sort(num, num+n);
return 0;
}
Hasil Pemrograman
100 data
1000 data
10000 data
100000 data
int num[n];
srand(time(0));
for (int i=0; i<n; i++) {
num[i] = rand();
}
cout << "\nData sebelum sorting : ";
printNum(num, n);
clock_t start, end;
start = clock ();
sort(num, num+n, greater <int>());
return 0;
}
Hasil Pemrograman
100 data
1000 data
10000 data
100000 data
Tabel perbandingan running time tiap data menggunakan fungsi STL C++ sort()
Running Time
Banyak Ascendin Descending
Data g
Insertion Selection STL Insertion Selection STL
Sort Sort sort() Sort Sort sort()
100 3.539 3.982 0.019 4.249 2.373 0.02
1000 6.653 5.435 0.251 4.298 3.172 0.258
10000 7.538 6.719 2.547 7.19 7.664 3.016
100000 34.23 41.9 28.275 36.04 42.1 24.773
Dari tabel perbandingan diatas, dapat disimpulkan bahwa , program dengan fungsi
STL sort() membutuhkan waktu yang lebih singkat jika dibandingkan dengan
program yang menggunakan insertion sort ataupun selection sort. Tapi perbedaan
waktunya tidak terlalu signifikan
struct data_t {
double weight;
double price;
};
int main () {
int N, X;
cin >> N >> X;
data_t rice [N+1];
double cap = 0;
double cost = 0;
if(cap == X) {
break;
}
}
}
cout << fixed << setprecision(5);
cout << cost;
}
Hasil Pemrograman