Anda di halaman 1dari 15

MATA KULIAH : PRAKTIKUM STRUKTUR DATA ACC :

NIM : A710200066
NAMA : IKHSAN FADIL
TGL PRAKTIKUM : 06-04-2021 TGL :

BAB 4
PENGURUTAN EFISIEN (EFFICIENT SORTING)

1. Dasar Teori
Pada bab sebelumnya sudah dibahas bab 3 mengenai pengurutan dasar (elementary
sorting) dan pada bab 4 ini akan dibahasa mengenai pengurutan efisien (efficient sorting)
pada struktur data.
1.1 Rekursi
Salah satu pengurutan efesien yang ada pada ilmu komputer yaitu rekursi. Rekursi
merupakan sebuah fungsi yang memanggil dirinya sendiri. Dalam rekursi terdapat dua
komponen penting, yaitu pengurangan atau pembagian data ketika fungsi memanggil
dirinya sendiri dan kondisi kapan berhentinya fungsi.
Berikut merupakan contoh kode rekursi :

Berikut uraian langkah pemanggilannya :

Gambar diatas merupakan cara menghitung hasil kali dari dua bilangan. Kemudian contoh
dari rekursi lainnya yaitu :

Berikut uraian langkah pemanggilannya :


Gambar diatas merupakan cara melakukan perhitungan faktorial. Kedua gambar di atas
mempunyai kemiripan cara kerja serta kode dari fungsi kali dan faktorial,
1.2 Pengurutan gabung (Merge Sort)
Merge sort merupakan algoritma sorting yang berdasarkan dengan cara
menggabungkan dan membagi. Algoritma ini membagi Array atau bilangan sampai tidak
dapat dibagi kembali dan mengurutkannya setiap bagian.
Cara kerja merge sort :
 Bagi array bilangan sampai tidak dapat dibagi lagi,
 Urutkan bilangan yang telah dibagi,
 Kemudian gabungkan kembali bilangan yang telah dibagi,
 Setelah itu Array bilangan akan terurut.
Dibawah merupakan penggambaran cara kerja dari merge sort :
1.3 Quick Sort
Quick Sort merupakan algoritma pengurutan data yang menggunakan teknik
pemecahan data menjadi partisi-partisi. Sehingga metode ini disebut dengan nama partition
exchange sort (semacam pertukaran partisi). Untuk memulai perulangan pengurutan,
pertama sebuah elemen dipilih terlebih dulu dari data, dan kemudian elemen-elemen data
akan diurutkan diatur sedemikian rupa (dari yang terkecil sampai terbesar).

1.4 Heap Sort


Heap sort merupakan sebuah metode mengurutkan dengan memanfaatkan sifat
yang dimiliki oleh struktur data heap. Heap sendiri merupakan sebuah “binary search tree”
dengan sifat parent memiliki nilai >= nilai yang ada di anaknya. Meski dikatakan sebuah
binary search tree, namun heap lebih diarahkan ke konsepsi atau menganggap suatu array
memiliki sifat heap. Terdapat 3 bagian pada heap sort, yaitu : Edge, Note dan Leaf. Edge
merupakan garis yang menghubungkan tiap node. Node merupakan setiap index yang
berada pada array. Dan leaf merupakan setiap node yang tidak memiliki child node (node
turunan). Selain itu, ada juga root, root merupakan node awal pada sebuah heap.

2. Tujuan
 Mempelajari konsep rekursi yang digunakan dalam proses pengurutan data.
 Mempelajari algoritma pengurutan lebih lanjut mengenai pengurutan efisien
(efficient sorting algorithms).
 Dapat menentukan algoritma pengurutan terbaik sesuai dengan permasalahan yang
dihadapi.
3. Analisa Hasil
3.1 Kegiatan 1 : Rekursi

Gambar 1.1 Rekursi


Analisa :
Pada gambar 1.1 kegiatan kesatu diatas merupakan kegiatan membuat program
rekursi pada C++. Pertama #include <iostream>, kemudian #include coni.h>. Kemudian
using namesapace std;. Kemudia buat int faktorial (int, a);. Kemudian buat fungsi
utamanya main ();, int faktor; faktor = faktorial 6; seperti pada baris 9 sampai 12, dan buat
getch (). Setelah itu buat perulangan for, else, while seperti pada baris 15 sampai 20.
Terakhir buat return 0 untuk mengakhiri program.
3.2 Kegiatan 2 : Merge Sort

Gambar 1.2 Merge Sort

Gambar 1.3 Merge sort


Analisa :
Pada gambar 1.2 dan 1.3 kegiatan kedua diatas merupakan kegiatan membuat
program merge sort pada C++. Pertama buat #include <iostream>, #include <conio.h>, dan
#include <iomanip>. Kemudian buat usiang namespace std;. kemudian buat void merge
(int *, int, int, int); dan seterusnya seperti pada baris 8 sampai bairs 15, kemudian buat
return. Kemudian buat void merge (int *a, int low, int hight, int mid); seperti pada baris 18
sampai baris 22. Kemudian buat while while (i <= mid && j <= high);. Kemudian buat
perulangan
Seperti pada baris 14 sampai baris 33. Kemudian buat fungsi while lagi seperti pada baris
34 sampai baris 39. Kemudian buat for for (i = low; i < k; i++) seperti pada baris 40
sampai baris 43. Kemudian buat fungsi int main () seperti pada bais 45 sampai baris 59.
Terakhir buat getch untuk mengakhiri program.

3.3 Kegiatan 3 : Quick Sort

Gambar 1.4 Quick Sort


Gambar 1.5 Quick sort
Analisa :
Pada gambar 1.4 dan 1.5 kegiatan ketiga diatas merupakan kegiatan membuat
program quick sort pada C++. Pada kegiatan ini kita akan membuat sebuat pengurutan
quick sort menggunakan fungsi-fungsi seperti void, int, dan for. Untuk kode-kodenya bisa
dilihat pada gambar 1.4 dan 1.5.

3.4 Kegiatan 4 : Heap Sort


Gambar 1.6 Heap sort

Gambar 1.7 Heap sort


Analisa :
Pada gambar 1.6 dan 1.7 kegiatan keempat diatas merupakan kegiatan membuat
program heap sort pada C++. Pada kegiatan ini kita akan membuat sebuat pengurutan
quick sort menggunakan fungsi-fungsi seperti void, int, for, else, while atau perulangan.
Untuk kode-kode programnya bisa dilihat pada gambar 1.6 dan 1.7.

4. Penyelesaian Tugas
1. Buat program baru untuk menjalankan sebuah fungsi rekursi, akan tetapi input angka
dan jumlah indeks elemen dalam array ditentukan oleh pengguna.
Penyelesaian :
Gambar 1.8 Tugas 1
Analisa :
Pada gambar 1.8 tugas kesatu diatas merupakan program membuat fungsi
rekursi. Pertama buat #iclude <iostream>, using namespace std ;. Kemudian buat
fungsi int main() seperti pada baris 3 sampai baris 6. Kemudian buat for (int
a=1;a<=num;a++) seperti pada baris 7 sampai baris 10. Terakhir buat return 0 untuk
mengakhiri program.

2. Buat sebuah program baru untuk mengurutkan data array menggunakan metode
merge sort yang jumlah indeks elemen dan nilai array tersebut ditentukan oleh
pengguna.
Penyelesaian :
Gambar 1.9 Tugas 2

Gambar 1.10 Tugas 2


Analisa :
Pada gambar 1.9 dan 1.10 diatas merupakan membuat program
mengurutkan data array dengan metode merge sort. Pada tugas 2 ini menggunkan
berbagai fungsi C++ seperti void, int, perulangan, array. Dimana program ini akan
membuat data array yang sebelumnya tidak terurut menjadi terurut. Kode-kode
programnya bisa dilihat pada gambar 1.9 dan 1.10.

3. Sama seperti pada tugas nomor 2, akan tetapi menggunakan metode quick sort.
Penyelesaian :

Gambar 1.11 Tugas 3


Gambar 1.12 Tugas 3
Analisa :
Pada gambar 1.11 dan 1.12 diatas merupakan membuat program data array
dengan metode quick sort. Pada tugas 3 ini menggunkan berbagai fungsi C++ seperti
void, int, perulangan, array. Dimana program ini akan membuat data array yang
sebelumnya tidak terurut menjadi terurut. Kode-kode programnya bisa dilihat pada
gambar 1.11 dan 1.12.

4. Dengan menggunakan algoritma pengurutan heap sort, buat program untuk


mengurutkan data seperti pada tugas nomor 2.
Penyelesaian :
Gambar 1.13 Tugas 4

Gambar 1.14 Tugas 4


Analisa :
Pada gambar 1.13 dan 1.14 diatas merupakan membuat program data array
dengan metode heap sort. Pada tugas 3 ini menggunkan berbagai fungsi C++ seperti
void, int, perulangan, array. Dimana program ini akan membuat data array yang
sebelumnya tidak terurut menjadi terurut. Kode-kode programnya bisa dilihat pada
gambar 1.13 dan 1.14.

5. Kesimpulan
 Rekursi merupakan fungsi yang dapat memanggil dirinya sendiri.
 Merge Sort merupakan algoritma sorting yang dapat menggabungkan dan membagi
berdasarkan dengan cara.
 Heap Sort merupakan metode pegurutan dengan memanfaatkan sifat yang dimiliki
oleh struktur data heap.
 Quick Sort merupakan algoritma sorting yang berdasarkan perbandingan
menggunakan metode divide and conqueror.
6. Daftar Pustaka
 http://dev.bertzzie.com/knowledge/analisis-algoritma/Rekursif.html
 https://zonapemrograman.blogspot.com/2019/07/penjelasan-lengkap-merge-sort-
c.html
 https://satriaskyterror.wordpress.com/2012/03/20/heap-sort-algorithm/
 https://docplayer.info/57531848-Makalah-struktur-data-heap-sort-disusun-
oleh.html
 http://onophp.blogspot.com/2018/11/quick-sort-pengertian-agoritma-dan.html

Anda mungkin juga menyukai