Anda di halaman 1dari 14

LAPORAN PRAKTIKUM

ALGORITMA DAN PEMROGRAMAN

MODUL VII

“SORTING”

Disusun oleh:

Fahrial Aufa Ramadhan


2311102241

Dosen Pengampu:

Sudianto,M.kom

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS INFORMATIKA
INSTITUT TEKNOLOGI TELKOM PURWOKERTO
2023
BAB I

TUJUAN PRAKTIKUM

1. Memahami dan menerapkan beberapa algoritma sorting dalam menyelesaikan berbagai studi
kasus
BAB II

DASAR TEORI

Sorting adalah proses pengaturan atau penyusunan elemen-elemen dalam suatu urutan tertentu.
Tujuan utama dari pengurutan adalah untuk menyusun data atau elemen-elemen sehingga mudah
dicari, diakses, atau diolah. Pengurutan seringkali digunakan dalam pemrograman dan ilmu komputer
untuk meningkatkan efisiensi pencarian dan manipulasi data.Ada berbagai algoritma pengurutan yang
dapat digunakan, dan pilihan algoritma tergantung pada berbagai faktor, seperti ukuran data, sifat
data, dan kebutuhan performa. Beberapa algoritma pengurutan yang umum meliputi:

 Bubble Sort: Mengulang melalui daftar, membandingkan setiap elemen berturut-turut, dan
menukar mereka jika berada di urutan yang salah.

 Insertion Sort: Memisahkan daftar menjadi dua bagian, yaitu bagian yang sudah diurutkan
dan bagian yang belum diurutkan. Kemudian, satu per satu elemen dari bagian yang belum
diurutkan dimasukkan ke bagian yang sudah diurutkan pada posisi yang tepat.

 Selection Sort: Mencari elemen terkecil dari daftar dan menukarnya dengan elemen di posisi
pertama. Proses ini diulang untuk bagian dari daftar yang belum diurutkan.

 Merge Sort: Menggunakan pendekatan divide-and-conquer untuk membagi daftar menjadi


dua bagian, mengurutkan masing-masing bagian, dan menggabungkannya kembali.

 Quick Sort: Menggunakan pendekatan divide-and-conquer juga, tetapi dengan memilih


elemen tertentu sebagai pivot, kemudian membagi daftar menjadi dua bagian, satu dengan
elemen yang lebih kecil dari pivot dan satu dengan elemen yang lebih besar.

 Heap Sort: Membangun struktur data heap dan secara berulang mengambil elemen terbesar
dari heap dan menempatkannya di akhir daftar.

Pengurutan dapat diterapkan pada berbagai jenis data, termasuk bilangan bulat, bilangan desimal,
string, atau struktur data yang lebih kompleks. Pemilihan algoritma pengurutan yang tepat dapat
memiliki dampak signifikan pada kinerja program dan efisiensi pengolahan data.
BAB III

GUIDED

GUIDED 1
Source code

#include <iostream>
using namespace std;

void selectSort(double data[], int n){


int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (data[j] > data[min_idx])
min_idx = j;
}
if (min_idx != i);
swap(data[min_idx], data[i]);

}
}
void print_arr(double data[], int length){
for(int i = 0; i < length; i++) {
cout << data[i] << "\t";
}
cout << endl;
}

int main(){

int n = 5;
double data[n] = {3.8, 2.9, 3.3, 4.0, 2.4};

cout << "Urutan Data yang belum di sorting" << endl;


print_arr(data, n);
selectSort(data, n);

cout << "Urutan Data yang udah di sorting" << endl;


print_arr(data, n);
}
Screenshot program

Descripsi program

Program ini menggunakan metode Selection Sort untuk mengurutkan data array yang
berisi nilai double. selectSort merupakan fungsi yang akan melakukan urutan pada array data
yang telah dikirim. Fungsi ini melakukan perulangan dua kali untuk menemukan index
minimum. Pertama melakukan perulangan pada n - 1 index untuk menentukan baris, kedua
melakukan perulangan pada n - i index untuk menentukan kolom yang mengandung nilai
minimum dalam baris tersebut. Jika nilai minimum yang telah didapat tidak berada pada
index pertama, maka nilai di index pertama akan ditukar dengan nilai minimum. Fungsi ini
akan mengulangi proses tersebut sampai seluruh data array sudah berada dalam urutan yang
benar. Untuk memudahkan pengecekan hasil pengurutan, program ini juga mencetak array
sebelum dan sesudah dilakukan pengurutan. Pengecekan hasil dapat dilakukan dengan
membandingkan output dari array sebelum dan sesudah dilakukan pengurutan. Hasilnya akan
menunjukkan bahwa array yang sudah diurutkan sesuai dengan kebutuhan.
BAB III

GUIDED

GUIDED 2
Source code

#include <iostream>
using namespace std;

void sortingBubble_sort(string *dataWarga, int length){


string tmp;
for (int j = 0; j < length; j++){
for (int k = j + 1; k < length; k++){
if (dataWarga[j] > dataWarga[k]){
tmp = dataWarga[j];
dataWarga[j] = dataWarga[k];
dataWarga[k] = tmp;
}
}
}
}
void print_array(string *dataWarga, int length){
for (int i = 0; i < length; i++){
cout << dataWarga[i] << "\t";
}
cout << endl;
}

int main()
{
int length = 10;
string dataWarga[length] = {"siti", "situ", "sana", "ana", "ani",
"caca", "cici", "dida", "dodo","dadi"};

cout << "\nData Sebelum Diurutkan:\n";


print_array(dataWarga, length);
sortingBubble_sort(dataWarga, length);

cout << "\nData Setelah Diurutkan: \n";


print_array(dataWarga, length);

}
Screenshot program

Descripsi program

Program ini menggunakan metode Bubble Sort untuk mengurutkan data array yang
berisi string. sortingBubble_sort merupakan fungsi yang akan melakukan urutan pada array
data yang telah dikirim. Fungsi ini melakukan perulangan dua kali untuk menemukan nilai
minimum dan mengurutkannya ke urutan yang benar. Pertama melakukan perulangan pada n
- 1 index untuk menentukan baris, kedua melakukan perulangan pada n - i index untuk
menentukan kolom yang mengandung nilai minimum dalam baris tersebut. Jika nilai
minimum yang telah didapat tidak berada pada index pertama, maka nilai di index pertama
akan ditukar dengan nilai minimum. Fungsi ini akan mengulangi proses tersebut sampai
seluruh data array sudah berada dalam urutan yang benar. Untuk memudahkan pengecekan
hasil pengurutan, program ini juga mencetak array sebelum dan sesudah dilakukan
pengurutan. Pengecekan hasil dapat dilakukan dengan membandingkan output dari array
sebelum dan sesudah dilakukan pengurutan. Hasilnya akan menunjukkan bahwa array yang
sudah diurutkan sesuai dengan kebutuhan. print_array merupakan fungsi yang akan mencetak
data array yang telah dikirim. sortingBubble_sort merupakan fungsi yang akan melakukan
urutan pada array data yang telah dikirim. Pengecekan hasil dapat dilakukan dengan
membandingkan output dari array sebelum dan sesudah dilakukan pengurutan. Hasilnya akan
menunjukkan bahwa array yang sudah diurutkan sesuai dengan kebutuhan.
TUGAS

TUGAS 1
Source code

#include <iostream>
using namespace std;

void selectSort(double data[], int n){


int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (data[j] > data[min_idx])
min_idx = j;
}
if (min_idx != i);
swap(data[min_idx], data[i]);

}
}
void print_arr(double data[], int length){
for(int i = 0; i < length; i++) {
cout << data[i] << "\t";
}
cout << endl;
}

int main(){

int n = 5;
double data[n] = {3.8, 2.9, 3.3, 4.0, 2.4};

cout << "Urutan Data yang belum di sorting" << endl;


print_arr(data, n);
selectSort(data, n);

cout << "Urutan Data yang udah di sorting" << endl;


print_arr(data, n);
}
Screenshot program

Descripsi program

implementasi dari algoritma pengurutan "Selection Sort" pada array yang berisi data
dengan tipe data double. Pertama, kita mendefinisikan fungsi selectSort yang mengambil
array data dengan tipe data double dan panjang array n dengan tipe data int sebagai
parameter. Fungsi ini melakukan proses pengurutan. Dalam fungsi selectSort, kita melakukan
iterasi dari indeks i yang berada pada index pertama hingga kedua penutup (index n - 1).
Selanjutnya, kita mencari indeks minimum (min_idx) pada bagian yang tersisa dari array
yang dimulai dari index i + 1 Kemudian, kita membandingkan elemen pada indeks i dengan
elemen pada indeks min_idx. Jika elemen pada indeks i lebih kecil dari elemen pada indeks
min_idx, maka kita menggantikan elemen pada indeks i dengan elemen pada indeks min_idx.
Proses ini dilakukan agar array terurut dari yang terkecil hingga yang terbesar. Fungsi
selectSort dilakukan hingga seluruh elemen pada array telah terurut Selanjutnya, kita
mendefinisikan fungsi print_arr yang mengambil array data dan panjang array n sebagai
parameter. Fungsi ini digunakan untuk mencetak isi array ke layar. Pada bagian main, kita
mendefinisikan panjang array n dan isi array data. Kemudian, kita mencetak isi array sebelum
diurutkan menggunakan fungsi print_arr. Setelah itu, kita memanggil fungsi selectSort untuk
mengurutkan array data. Terakhir, kita mencetak isi array setelah diurutkan menggunakan
fungsi print_arr. Jadi, program ini akan menghasilkan output yang menunjukkan bahwa array
data telah berhasil diurutkan dari yang terkecil hingga yang terbesar
TUGAS 2
Source code

#include <iostream>

using namespace std;

void sortingBubble_sort(string *dataWarga, int length){


string tmp;
for (int j = 0; j < length; j++){
for (int k = j + 1; k < length; k++){
if (dataWarga[j] > dataWarga[k]){
tmp = dataWarga[j];
dataWarga[j] = dataWarga[k];
dataWarga[k] = tmp;
}
}
}
}
void print_array(string *dataWarga, int length){
for (int i = 0; i < length; i++){
cout << dataWarga[i] << "\t";
}
cout << endl;
}

int main()
{
int length = 10;
string dataWarga[length] = {"siti", "situ", "sana", "ana", "ani", "caca",
"cici", "dida", "dodo","dadi"};

cout << "\nData Sebelum Diurutkan:\n";


print_array(dataWarga, length);
sortingBubble_sort(dataWarga, length);

cout << "\nData Setelah Diurutkan: \n";


print_array(dataWarga, length);

Screenshot program
Descripsi program

Program ini adalah implementasi dari algoritma pengurutan "Selection Sort" pada
array yang berisi data dengan tipe data string. Algoritma Selection Sort ini menggunakan
pendekatan "divide and conquer" untuk mencari indeks minimum (atau maksimum) pada
setiap langkah pengurutan. Dalam setiap langkah ini, algoritma akan membandingkan setiap
elemen dengan elemen yang dijadikan titik perbandingan (dalam kasus ini, titik perbandingan
adalah indeks saat ini). Jika elemen pada indeks yang dijadikan titik perbandingan lebih kecil
dari elemen yang sedang diperbandingkan, maka elemen yang dijadikan titik perbandingan
akan diberikan nilai yang lebih kecil (atau yang lebih besar dalam kasus pengurutan secara
descending). Proses ini dilakukan hingga elemen terakhir pada array terurut. Selain itu,
program ini juga mendefinisikan fungsi print_array yang mengambil array dataWarga dan
panjang array length sebagai parameter. Fungsi ini digunakan untuk mencetak isi array ke
layar. Pada bagian main, program akan menjalankan fungsi sortingBubble_sort untuk
mengurutkan array dataWarga. Selanjutnya, program akan mencetak isi array sebelum dan
sesudah diurutkan menggunakan fungsi print_array. Jadi, program ini akan menghasilkan
output yang menunjukkan bahwa array dataWarga telah berhasil diurutkan dari yang terkecil
hingga yang terbesar.
TUGAS 3
Source code

#include <iostream>
using namespace std;

void ascendingBubbleSort(char data[], int jumlah) {


char tmp;
for (int j = 0; j < jumlah; j++) {
for (int k = j + 1; k < jumlah; k++) {
if (data[j] > data[k]) {
tmp = data[j];
data[j] = data[k];
data[k] = tmp;
}
}
}
}
void descendingBubbleSort(char data[], int jumlah) {
char tmp;
for (int j = 0; j < jumlah; j++) {
for (int k = j + 1; k < jumlah; k++) {
if (data[j] < data[k]) {
tmp = data[j];
data[j] = data[k];
data[k] = tmp;
}
}
}
}
void print_array(char *data, int jumlah){
for (int i = 0; i < jumlah; i++){
cout << data[i] << "\t";
}
cout << endl;
}

int main() {
char tmp;
int i, k, j, jumlah, pilihan;

cout << "Input Jumlah Karakter: ";


cin >> jumlah;

char *data = new char[jumlah];

for (i = 0; i < jumlah; i++) {


cout << "Masukkan Karaker ke-" << i + 1 << ": ";
cin >> data[i];
}

cout << "Data Sebelum Diurutkan:\n";


print_array(data, jumlah);
ascendingBubbleSort(data, jumlah);

cout << "Urutan Anda Ascending\n";


print_array(data, jumlah);
cout << "Urutan Anda Descending\n";
descendingBubbleSort(data, jumlah);
print_array(data, jumlah);
}

Screenshot program

Descripsi program

Program ini mendefinisikan fungsi ascendingBubbleSort yang mengimplementasikan


metode pengurutan ascending berdasarkan algoritma Bubble Sort. Selain itu, program ini
juga mendefinisikan fungsi descendingBubbleSort yang mengimplementasikan metode
pengurutan descending berdasarkan algoritma Bubble Sort. Program mulai dengan menginput
jumlah karakter yang akan diurutkan, lalu menginput karakter-karakter tersebut. Setelah itu,
program akan menampilkan data sebelum diurutkan. Kemudian, program akan mengurutkan
data karakter menggunakan fungsi ascendingBubbleSort dan menampilkan hasil pengurutan
tersebut. Kemudian, program akan mengurutkan data karakter menggunakan fungsi
descendingBubbleSort dan menampilkan hasil pengurutan tersebut. Selain itu, program juga
mendefinisikan fungsi print_array yang digunakan untuk mencetak isi array secara tab-
delimited. Fungsi ini digunakan untuk memudahkan pengguna dalam memvisualisasikan data
sebelum dan sesudah diurutkan. Secara keseluruhan, program ini berfungsi untuk
mengurutkan karakter yang diinputkan oleh pengguna menggunakan metode Bubble Sort dan
menampilkan hasil pengurutan tersebut. Selain itu, program ini juga memberikan kemudahan
bagi pengguna dalam memvisualisasikan data sebelum dan sesudah diurutkan
BAB IV

KESIMPULAN

Metode Bubble Sort merupakan metode pengurutan yang sangat dasar. Dalam
melakukan pengurutan, metode ini menggunakan prinsip perbandingan dan penggantian
untuk menukarkan posisi antar elemen yang tidak sesuai dengan urutan yang diinginkan.
Salah satu kelebihan metode Bubble Sort adalah faktanya merupakan metode yang sederhana
dan mudah diimplementasikan. Namun, salah satu kelemahan utama metode ini adalah
faktanya kurang efisien dalam melakukan pengurutan, terutama jika berurusan dengan ukuran
array yang besar. Hal ini karena pada setiap langkah pengurutan, metode Bubble Sort akan
melakukan perbandingan dan penggantian elemen secara berulang-ulang sampai tidak ada
lagi perubahan dalam urutan data. Dalam prakteknya, jika kinerja pengurutan yang cepat
sangat diperlukan, metode pengurutan lain seperti Quick Sort atau Merge Sort mungkin lebih
sesuai. Metode-metode pengurutan ini menggunakan prinsip-prinsip yang lebih avans dan
kompleks untuk mengoptimalkan proses pengurutan, sehingga dapat menghasilkan kinerja
yang lebih baik dibandingkan dengan metode Bubble Sort. Untuk kesimpulan padat, metode
Bubble Sort merupakan metode pengurutan yang sederhana dan mudah diimplementasikan,
tetapi kurang efisien dalam melakukan pengurutan, terutama jika berurusan dengan ukuran
array yang besar. Oleh karena itu, jika kinerja pengurutan yang cepat sangat diperlukan,
metode pengurutan lain seperti Quick Sort atau Merge Sort mungkin lebih sesuai.

Anda mungkin juga menyukai