0% menganggap dokumen ini bermanfaat (0 suara)
48 tayangan18 halaman

Kuliah 12 - Algoritma Sorting

Materi membahas algoritma pengurutan, termasuk Bubble Sort, Selection Sort, Merge Sort, dan Quick Sort. Setiap algoritma dijelaskan dari cara kerja, implementasi dalam C++, hingga analisis efisiensi. Bubble Sort membandingkan elemen berpasangan, Selection Sort menemukan elemen terkecil, Merge Sort menggunakan pendekatan divide and conquer, sementara Quick Sort memilih elemen pivot untuk partisi array. Perbandingan meliputi kelebihan dan kekurangan, seperti kompleksitas waktu dan stabilitas.

Diunggah oleh

Alwin Sambul
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
48 tayangan18 halaman

Kuliah 12 - Algoritma Sorting

Materi membahas algoritma pengurutan, termasuk Bubble Sort, Selection Sort, Merge Sort, dan Quick Sort. Setiap algoritma dijelaskan dari cara kerja, implementasi dalam C++, hingga analisis efisiensi. Bubble Sort membandingkan elemen berpasangan, Selection Sort menemukan elemen terkecil, Merge Sort menggunakan pendekatan divide and conquer, sementara Quick Sort memilih elemen pivot untuk partisi array. Perbandingan meliputi kelebihan dan kekurangan, seperti kompleksitas waktu dan stabilitas.

Diunggah oleh

Alwin Sambul
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 18

Kuliah 12 - Algoritma

Pengurutan
Sub Capaian Pembelajaran
Setelah mempelajari bab ini, mahasiswa diharapkan mampu:

1. Memahami konsep dasar dari berbagai algoritma pengurutan.

2. Mengimplementasikan algoritma pengurutan menggunakan bahasa C++.

3. Menganalisis efisiensi dan kompleksitas dari algoritma-algoritma


pengurutan tersebut.

Pendahuluan
Algoritma pengurutan adalah salah satu topik fundamental dalam ilmu komputer
yang penting untuk dikuasai. Pengurutan data diperlukan dalam berbagai
aplikasi, seperti pencarian data yang efisien, pengaturan data dalam laporan,
dan pengelolaan basis data. Pada bab ini, kita akan membahas beberapa
algoritma pengurutan yang umum digunakan, yaitu Bubble Sort, Selection Sort,
Merge Sort, dan Quick Sort. Setiap algoritma akan dijelaskan secara rinci
dengan contoh program dalam bahasa C++.

Bubble Sort
Bubble Sort adalah salah satu algoritma pengurutan paling sederhana.
Algoritma ini bekerja dengan cara membandingkan elemen-elemen
berpasangan dan menukar posisi mereka jika berada dalam urutan yang salah.
Proses ini diulang hingga tidak ada lagi pasangan elemen yang perlu ditukar.

Cara Kerja Algoritma Bubble Sort

Kuliah 12 - Algoritma Pengurutan 1


Gambar di atas menunjukkan cara kerja algoritma Bubble Sort. Penjelasannya
adalah sebagai berikut:
Di awal algoritma, isi array adalah {64, 34, 25, 12, 22}.
Putaran 1: Pada putaran pertama, algoritma akan membandingkan setiap
pasangan elemen berurutan dalam array. Jika elemen pertama lebih besar dari
elemen kedua, maka elemen-elemen tersebut ditukar. Proses ini diulang hingga
akhir array, sehingga elemen terbesar "mengapung" ke posisi terakhir. Berikut
langkah-langkah di putaran 1:

a. 64 dan 34: karena 64 lebih besar dari 34, tukar posisi.

b. 64 dan 25: karena 64 lebih besar dari 25, tukar posisi.

c. 64 dan 12: karena 64 lebih besar dari 12, tukar posisi.

d. 64 dan 22: karena 64 lebih besar dari 22, tukar posisi.

Di akhir Putaran 1, elemen terbesar (64) akan dibawa “mengapung” ke posisi


paling akhir.
Putaran 2: Pada putaran kedua, proses yang sama diulangi untuk elemen-
elemen yang tersisa, kecuali elemen terakhir (64) yang sudah berada di posisi
yang benar. Elemen terbesar kedua (34) akan "mengapung" ke posisi kedua
terakhir. Berikut langkah-langkah di putaran 2:

a. 34 dan 25: karena 34 lebih besar dari 25, tukar posisi.

b. 34 dan 12: karena 34 lebih besar dari 12, tukar posisi.

Kuliah 12 - Algoritma Pengurutan 2


c. 34 dan 22: karena 34 lebih besar dari 22, tukar posisi.

Di akhir Putaran 2, elemen terbesar kedua (34) akan dibawa “mengapung” ke


posisi kedua terakhir.
Putaran 3: Pada putaran ketiga, proses yang sama diulangi untuk elemen-
elemen yang tersisa, kecuali elemen-elemen terakhir (34 dan 64) yang sudah
berada di posisi yang benar. Berikut langkah-langkah di putaran 3:

a. 25 dan 12: karena 25 lebih besar dari 12, tukar posisi.

b. 25 dan 22: karena 25 lebih besar dari 22, tukar posisi.

Di akhir Putaran 3, elemen terbesar ketiga (25) akan dibawa “mengapung” ke


posisi ketiga terakhir.
Putaran 4: Pada putaran keempat, proses yang sama diulangi untuk elemen-
elemen yang tersisa, kecuali elemen-elemen yang sudah berada di posisi yang
benar (25, 24, dan 64). Elemen 12 dan 22 dibandingkan. Karena 12 lebih kecil
dari 22, posisi tidak ditukar. Di akhir Putaran 4, tidak ada perubahan posisi
karena elemen-elemen sudah pada posisi yang terurut.
Karena tidak ada lagi pasangan elemen dalam array yang perlu ditukar, itu
menandakan array sudah dalam keadaan terurut sehingga algoritma berakhir.

Kode Program Algoritma Bubble Sort


Berikut kode program sebagai implementasi dari algoritma di atas:

#include <iostream>
using namespace std;

void bubbleSort(int arr[], int n) {


for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// Tukar arr[j] dan arr[j+1]
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}

Kuliah 12 - Algoritma Pengurutan 3


}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}

int main() {
int arr[] = {64, 34, 25, 12, 22};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
cout << "Array setelah pengurutan: \\n";
printArray(arr, n);
return 0;
}

Output:

Array setelah pengurutan:


12 22 25 34 64

Penjelasan:

Program di atas terdiri dari beberapa fungsi yang bekerja sama untuk
mengurutkan array menggunakan algoritma Bubble Sort dan mencetak array
yang sudah terurut. Berikut adalah penjelasan detil dari setiap bagian program:

1. Fungsi bubbleSort

Fungsi bubbleSort mengimplementasikan algoritma Bubble Sort. Fungsi ini


menerima dua parameter: array arr dan ukuran array n . Algoritma ini bekerja
dengan dua loop bersarang:

Loop luar: Berjalan dari i = 0 hingga n-1 . Loop ini memastikan bahwa
seluruh array telah diurutkan setelah n-1 iterasi.

Loop dalam: Berjalan dari j = 0 hingga n-i-2 . Loop ini membandingkan


elemen berpasangan dan menukar posisinya jika elemen kiri lebih besar
dari elemen kanan. Hal ini dilakukan untuk setiap elemen hingga elemen
terbesar "mengapung" (floating) ke posisi yang benar di akhir array.

Kuliah 12 - Algoritma Pengurutan 4


2. Fungsi printArray

Fungsi printArray bertugas mencetak elemen-elemen array. Fungsi ini


menerima dua parameter: array arr dan ukuran array n . Fungsi ini
menggunakan loop untuk mencetak setiap elemen array diikuti oleh spasi, dan
akhirnya mencetak baris baru.

3. Fungsi main

Fungsi main adalah titik awal eksekusi program. Fungsi ini melakukan beberapa
tugas:

Mendeklarasikan dan menginisialisasi array: Array arr diinisialisasi


dengan beberapa nilai acak.

Menentukan ukuran array: Variabel n dihitung sebagai ukuran array


menggunakan sizeof .

Memanggil fungsi bubbleSort : Fungsi ini dipanggil dengan parameter array


arr dan ukurannya n untuk mengurutkan array.

Mencetak array yang sudah terurut: Fungsi printArray dipanggil untuk


mencetak elemen-elemen array yang sudah diurutkan.

Selection Sort
Selection Sort adalah algoritma pengurutan yang bekerja dengan cara
menemukan elemen terkecil dari bagian array yang belum terurut dan
menukarnya dengan elemen pertama dari bagian yang belum terurut tersebut.
Proses ini diulang hingga seluruh array terurut.

Cara Kerja Algoritma Selection Sort

Kuliah 12 - Algoritma Pengurutan 5


Gambar di atas menunjukkan cara kerja algoritma Selection Sort. Penjelasannya
adalah sebagai berikut:

Di awal algoritma, isi array adalah {64, 34, 25, 12, 22}.
Putaran 1: Pada putaran pertama, elemen pertama (64) dianggap sebagai nilai
minimum sehingga indeks minimum diatur sebagai indeks dari elemen pertama
(index minimum=0). Algoritma kemudian membandingkan nilainya dengan nilai
elemen array yang lain, jika nilainya lebih kecil, indeks elemen tersebut
menggantikan indeks minimum:

a. 34 dan 64: karena 34 lebih kecil dari 64, maka indeks minimum = 1

b. 25 dan 34: karena 25 lebih kecil dari 34, maka indeks minimum = 2

c. 12 dan 25: karena 12 lebih kecil dari 25, maka indeks minimum = 3

d. 22 dan 12: karena 22 lebih besar dari 22, maka indeks minimum tetap

Kuliah 12 - Algoritma Pengurutan 6


Dengan demikian pada akhir putaran 1, indeks minimum akan berisi indeks dari
elemen dengan nilai terkecil (12) yaitu indeks minimum = 3. Selanjutnya, nilai
dari elemen pada indeks minimum (12) ditukar dengan nilai elemen pertama
(64) sehingga isi array menjadi {12, 34, 25, 64, 22} dan elemen pertama (12)
dianggap sudah tersortir.
Putaran 2: Pada putaran kedua, elemen kedua (34) dianggap sebagai nilai
minimum sehingga indeks minimum diatur sebagai indeks dari elemen kedua
(index minimum=1). Algoritma kemudian membandingkan nilainya dengan nilai
elemen array yang lain, jika nilainya lebih kecil, indeks elemen tersebut
menggantikan indeks minimum:

a. 25 dan 34: karena 25 lebih kecil dari 34, maka indeks minimum = 2

b. 64 dan 25: karena 64 lebih besar dari 25, maka indeks minimum tetap

c. 22 dan 25: karena 22 lebih kecil dari 25, maka indeks minimum = 4

Dengan demikian pada akhir putaran 2, indeks minimum akan berisi indeks dari
elemen dengan nilai terkecil (22) yaitu indeks minimum = 4. Selanjutnya, nilai
dari elemen pada indeks minimum (22) ditukar dengan nilai elemen kedua (34)
sehingga isi array menjadi {12, 22, 25, 64, 34} dan elemen kedua (22) dianggap
sudah tersortir.
Putaran 3: Pada putaran ketiga, elemen ketiga (25) dianggap sebagai nilai
minimum sehingga indeks minimum diatur sebagai indeks dari elemen ketiga
(index minimum=2). Algoritma kemudian membandingkan nilainya dengan nilai
elemen array yang lain, jika nilainya lebih kecil, indeks elemen tersebut
menggantikan indeks minimum:

a. 64 dan 25: karena 64 lebih besar dari 25, maka indeks minimum tetap

b. 34 dan 25: karena 34 lebih besar dari 25, maka indeks minimum tetap

Dengan demikian pada akhir putaran 3, indeks minimum tidak berubah, yakni
indeks minimum = 2, sehingga isi array tetap {12, 22, 25, 64, 34} dan elemen
ketiga (25) dianggap sudah tersortir.

Putaran 4: Pada putaran keempat, elemen keempat (64) dianggap sebagai nilai
minimum sehingga indeks minimum diatur sebagai indeks dari elemen keempat
(index minimum=3). Algoritma kemudian membandingkan nilainya dengan nilai
elemen array yang lain, jika nilainya lebih kecil, indeks elemen tersebut
menggantikan indeks minimum. Cuma ada satu perbandingan yakni 34 dan 64:
karena 34 lebih kecil dari 64, maka indeks minimum = 4.

Kuliah 12 - Algoritma Pengurutan 7


Dengan demikian pada akhir putaran 4, indeks minimum akan berisi indeks dari
elemen dengan nilai terkecil (34) yaitu indeks minimum = 4. Selanjutnya, nilai
dari elemen pada indeks minimum (34) ditukar dengan nilai elemen keempat
(64) sehingga isi array menjadi {12, 22, 25, 34, 64} dan elemen keempat (34)
dianggap sudah tersortir.
Karena tidak ada nilai lagi yang harus dibandingkan maka inilah akhir dari
algoritma, di mana isi array sudah dalam keadaan tersortir: {12, 22, 25, 34, 64}

Kode Program Algoritma Selection Sort


Berikut ini adalah kode program dari algoritma selection sort:

#include <iostream>
using namespace std;

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


for (int i = 0; i < n-1; i++) {
int min_idx = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Tukar arr[min_idx] dan arr[i]
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}

int main() {
int arr[] = {64, 34, 25, 12, 22};
int n = sizeof(arr)/sizeof(arr[0]);
selectionSort(arr, n);

Kuliah 12 - Algoritma Pengurutan 8


cout << "Array setelah pengurutan: \n";
printArray(arr, n);
return 0;
}

Output:

Array setelah pengurutan:


12 22 25 34 64

Penjelasan:
Program di atas menggunakan algoritma Selection Sort untuk mengurutkan
array. Berikut adalah penjelasan rinci dari setiap bagian program:
1. Fungsi selectionSort

Fungsi selectionSort mengimplementasikan algoritma Selection Sort. Fungsi ini


menerima dua parameter: array arr dan ukuran array n . Algoritma ini bekerja
dengan dua loop bersarang:

Loop luar: Berjalan dari i = 0 hingga n-1 . Loop ini memastikan bahwa
seluruh array telah diurutkan setelah n-1 iterasi.

Loop dalam: Berjalan dari j = i+1 hingga n . Loop ini menemukan elemen
terkecil dari bagian array yang belum terurut dan menukarnya dengan
elemen pertama dari bagian yang belum terurut tersebut.

2. Fungsi printArray

Fungsi printArray bertugas mencetak elemen-elemen array. Fungsi ini


menerima dua parameter: array arr dan ukuran array n . Fungsi ini
menggunakan loop untuk mencetak setiap elemen array diikuti oleh spasi, dan
akhirnya mencetak baris baru.

3. Fungsi main

Fungsi main adalah titik awal eksekusi program. Fungsi ini melakukan beberapa
tugas:

Mendeklarasikan dan menginisialisasi array: Array arr diinisialisasi


dengan beberapa nilai acak.

Menentukan ukuran array: Variabel n dihitung sebagai ukuran array


menggunakan sizeof .

Kuliah 12 - Algoritma Pengurutan 9


Memanggil fungsi selectionSort : Fungsi ini dipanggil dengan parameter
array arr dan ukurannya n untuk mengurutkan array.

Mencetak array yang sudah terurut: Fungsi printArray dipanggil untuk


mencetak elemen-elemen array yang sudah diurutkan.

Merge Sort
Merge Sort adalah algoritma pengurutan yang menggunakan pendekatan
divide and conquer. Algoritma ini membagi array menjadi dua bagian,
mengurutkan setiap bagian secara rekursif, dan kemudian menggabungkan dua
bagian yang terurut tersebut.

#include <iostream>
using namespace std;

void merge(int arr[], int l, int m, int r) {


int n1 = m - l + 1;
int n2 = r - m;

int L[n1], R[n2];

for (int i = 0; i < n1; i++)


L[i] = arr[l + i];
for (int j = 0; j < n2; j++)
R[j] = arr[m + 1 + j];

int i = 0, j = 0, k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}

Kuliah 12 - Algoritma Pengurutan 10


while (i < n1) {
arr[k] = L[i];
i++;
k++;
}

while (j < n2) {


arr[k] = R[j];
j++;
k++;
}
}

void mergeSort(int arr[], int l, int r) {


if (l >= r)
return;

int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
merge(arr, l, m, r);
}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}

int main() {
int arr[] = {12, 11, 13, 5, 6, 7};
int n = sizeof(arr)/sizeof(arr[0]);
mergeSort(arr, 0, n - 1);
cout << "Array setelah pengurutan: \\n";
printArray(arr, n);
return 0;
}

Kuliah 12 - Algoritma Pengurutan 11


Output:

Array setelah pengurutan:


5 6 7 11 12 13

Penjelasan:
Program di atas mengimplementasikan algoritma Merge Sort dalam bahasa
C++. Berikut adalah penjelasan rinci dari setiap bagian program:

1. Fungsi merge

Fungsi merge bertanggung jawab untuk menggabungkan dua sub-array yang


sudah terurut menjadi satu array yang terurut. Fungsi ini menerima empat
parameter: array arr , indeks awal l , indeks tengah m , dan indeks akhir r .
Fungsi ini bekerja dengan beberapa langkah:

Membagi array menjadi dua sub-array: Array arr dibagi menjadi dua sub-
array, L dan R , berdasarkan indeks l , m , dan r .

Menggabungkan sub-array: Dua pointer, i dan j , digunakan untuk


menelusuri sub-array L dan R masing-masing. Pointer k digunakan untuk
menelusuri array arr . Elemen dari kedua sub-array dibandingkan, dan
elemen yang lebih kecil dimasukkan ke dalam array arr . Proses ini diulang
hingga semua elemen dari kedua sub-array digabungkan ke dalam array
arr .

Menyalin elemen yang tersisa: Elemen-elemen yang tersisa dari sub-array


L dan R disalin ke dalam array arr .

2. Fungsi mergeSort

Fungsi mergeSort mengimplementasikan algoritma Merge Sort. Fungsi ini


menerima tiga parameter: array arr , indeks awal l , dan indeks akhir r .
Algoritma ini bekerja dengan beberapa langkah:

Membagi array: Jika indeks awal l lebih kecil dari indeks akhir r , array
dibagi menjadi dua bagian dengan menemukan indeks tengah m .

Memanggil rekursif: Fungsi mergeSort dipanggil secara rekursif untuk


mengurutkan dua sub-array yang terbentuk: dari indeks l hingga m dan
dari indeks m + 1 hingga r .

Menggabungkan sub-array: Setelah kedua sub-array terurut, fungsi merge


dipanggil untuk menggabungkan kedua sub-array menjadi satu array yang

Kuliah 12 - Algoritma Pengurutan 12


terurut.

3. Fungsi printArray

Fungsi printArray bertugas mencetak elemen-elemen array. Fungsi ini


menerima dua parameter: array arr dan ukuran array n . Fungsi ini
menggunakan loop untuk mencetak setiap elemen array diikuti oleh spasi, dan
akhirnya mencetak baris baru.
4. Fungsi main

Fungsi main adalah titik awal eksekusi program. Fungsi ini melakukan beberapa
tugas:

Mendeklarasikan dan menginisialisasi array: Array arr diinisialisasi


dengan beberapa nilai acak.

Menentukan ukuran array: Variabel n dihitung sebagai ukuran array


menggunakan sizeof .

Memanggil fungsi mergeSort : Fungsi ini dipanggil dengan parameter array


arr , indeks awal 0 , dan indeks akhir n - 1 untuk mengurutkan array.

Mencetak array yang sudah terurut: Fungsi printArray dipanggil untuk


mencetak elemen-elemen array yang sudah diurutkan.

Secara keseluruhan, program ini menunjukkan implementasi sederhana dari


algoritma Merge Sort dalam bahasa C++.

Quick Sort
Quick Sort adalah algoritma pengurutan yang menggunakan pendekatan divide
and conquer. Algoritma ini memilih elemen pivot dan membagi array menjadi
dua bagian, dimana satu bagian berisi elemen yang lebih kecil dari pivot dan
bagian lainnya berisi elemen yang lebih besar dari pivot. Proses ini diulang
secara rekursif untuk setiap bagian.

#include <iostream>
using namespace std;

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


int t = *a;
*a = *b;
*b = t;

Kuliah 12 - Algoritma Pengurutan 13


}

int partition(int arr[], int low, int high) {


int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}

void quickSort(int arr[], int low, int high) {


if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}

int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr)/sizeof(arr[0]);
quickSort(arr, 0, n - 1);
cout << "Array setelah pengurutan: \\n";
printArray(arr, n);
return 0;
}

Kuliah 12 - Algoritma Pengurutan 14


Output:

Array setelah pengurutan:


1 5 7 8 9 10

Penjelasan:

Program di atas mengimplementasikan algoritma Quick Sort dalam bahasa


C++. Berikut adalah penjelasan rinci dari setiap bagian program:
1. Fungsi swap

Fungsi swap bertugas untuk menukar nilai dari dua elemen dalam array. Fungsi
ini menerima dua parameter: pointer a dan pointer b . Proses penukaran
dilakukan dengan menggunakan variabel sementara t untuk menyimpan nilai
sementara dari a .

2. Fungsi partition

Fungsi partition bertanggung jawab untuk membagi array menjadi dua bagian
berdasarkan pivot. Fungsi ini menerima tiga parameter: array arr , indeks
rendah low , dan indeks tinggi high . Proses partisi dilakukan dengan langkah-
langkah berikut:

Memilih pivot: Elemen terakhir dari array dipilih sebagai pivot.

Menukar elemen: Dua pointer, i dan j , digunakan untuk menelusuri


array. Pointer i digunakan untuk melacak posisi elemen yang lebih kecil
dari pivot, sedangkan pointer j digunakan untuk menelusuri seluruh
elemen array. Jika elemen pada posisi j lebih kecil dari pivot, maka elemen
tersebut ditukar dengan elemen pada posisi i .

Menempatkan pivot: Setelah semua elemen lebih kecil dari pivot


ditempatkan di sebelah kiri pivot, pivot ditukar dengan elemen pada posisi
i + 1 . Fungsi ini mengembalikan indeks dari pivot yang baru.

3. Fungsi quickSort

Fungsi quickSort mengimplementasikan algoritma Quick Sort. Fungsi ini


menerima tiga parameter: array arr , indeks rendah low , dan indeks tinggi
high . Algoritma ini bekerja dengan beberapa langkah:

Memanggil fungsi partition : Jika indeks rendah low lebih kecil dari indeks
tinggi high , fungsi partition dipanggil untuk membagi array menjadi dua
bagian berdasarkan pivot.

Kuliah 12 - Algoritma Pengurutan 15


Memanggil rekursif: Fungsi quickSort dipanggil secara rekursif untuk
mengurutkan dua bagian array yang terbentuk: dari indeks low hingga
indeks pi - 1 dan dari indeks pi + 1 hingga indeks high .

4. Fungsi printArray

Fungsi printArray bertugas mencetak elemen-elemen array. Fungsi ini


menerima dua parameter: array arr dan ukuran array n . Fungsi ini
menggunakan loop untuk mencetak setiap elemen array diikuti oleh spasi, dan
akhirnya mencetak baris baru.
5. Fungsi main

Fungsi main adalah titik awal eksekusi program. Fungsi ini melakukan beberapa
tugas:

Mendeklarasikan dan menginisialisasi array: Array arr diinisialisasi


dengan beberapa nilai acak.

Menentukan ukuran array: Variabel n dihitung sebagai ukuran array


menggunakan sizeof .

Memanggil fungsi quickSort : Fungsi ini dipanggil dengan parameter array


arr , indeks awal 0 , dan indeks akhir n - 1 untuk mengurutkan array.

Mencetak array yang sudah terurut: Fungsi printArray dipanggil untuk


mencetak elemen-elemen array yang sudah diurutkan.

Secara keseluruhan, program ini menunjukkan implementasi sederhana dari


algoritma Quick Sort dalam bahasa C++.

Perbandingan Algoritma-algoritma
Pengurutan
Berikut ini adalah perbandingan antara beberapa algoritma pengurutan yang
telah dibahas, yaitu Bubble Sort, Selection Sort, Merge Sort, dan Quick Sort.
Setiap algoritma memiliki kelebihan dan kekurangan masing-masing:

Bubble Sort
Kelebihan: Mudah dipahami dan diimplementasikan. Cocok untuk dataset
kecil dan hampir terurut.

Kuliah 12 - Algoritma Pengurutan 16


Kekurangan: Sangat tidak efisien untuk dataset besar karena memiliki
kompleksitas waktu O(n²).

Selection Sort
Kelebihan: Mudah dipahami dan diimplementasikan. Tidak memerlukan
banyak pertukaran elemen.

Kekurangan: Tetap memiliki kompleksitas waktu O(n²), sehingga tidak


cocok untuk dataset besar.

Merge Sort
Kelebihan: Sangat efisien dengan kompleksitas waktu O(n log n). Stabil dan
bekerja baik untuk dataset besar.

Kekurangan: Memerlukan ruang tambahan untuk array sementara,


sehingga memiliki kompleksitas ruang O(n).

Quick Sort
Kelebihan: Sangat cepat untuk dataset besar dengan kompleksitas waktu
rata-rata O(n log n). Tidak memerlukan ruang tambahan yang signifikan.

Kekurangan: Kinerja bisa menurun menjadi O(n²) pada kasus terburuk jika
pemilihan pivot tidak optimal. Tidak stabil.

Dengan memahami kelebihan dan kekurangan masing-masing algoritma, kita


dapat memilih algoritma yang paling sesuai untuk kebutuhan tertentu dalam
pemrograman. Pada kuliah selanjutnya, kita akan mempelajari materi tentang
kompleksitas waktu dan ruang untuk lebih memperdalam pemahaman kita
tentang efisiensi algoritma.

Kesimpulan
Pada bab ini, kita telah mempelajari berbagai algoritma pengurutan yang umum
digunakan, yaitu Bubble Sort, Selection Sort, Merge Sort, dan Quick Sort.
Setiap algoritma memiliki karakteristik dan kompleksitas yang berbeda, serta
cocok untuk situasi yang berbeda. Memahami dan mengimplementasikan
algoritma-algoritma ini akan membantu mahasiswa dalam menangani berbagai
masalah pengurutan data dalam pemrograman.

Kuliah 12 - Algoritma Pengurutan 17


Soal Latihan
1. Implementasikan algoritma Bubble Sort dalam bahasa C++ untuk
mengurutkan array berisi 10 bilangan bulat acak.

2. Modifikasi algoritma Selection Sort untuk mengurutkan array dalam urutan


menurun (descending order) dan implementasikan dalam bahasa C++.

3. Buatlah program C++ yang mengimplementasikan algoritma Merge Sort


untuk mengurutkan array yang berisi nama-nama mahasiswa secara
alfabetis.

Kuliah 12 - Algoritma Pengurutan 18

Anda mungkin juga menyukai