DISUSUN OLEH :
FAKULTAS TEKNIK
2020
1
KATA PENGANTAR
Puji dan syukur kami panjatkat kepada Tuhan Yang Maha Esa,karena telah
memberikan rahmat dan karunia-NYA serta kesehatan, sehingga saya mampu menyelesaikan
tugas makalah mini riset. Tugas ini dibuat untuk memenuhi salah satu mata kuliah saya yaitu
“Struktur Data”
Maka dari itu kami membutuhkan saran dan kritik yang membangun dari pembaca
sangat saya harapkan agar mini riset ini menjadi lebih baik. Akhir kata, kami mengucapkan
terimakasih kepada pembaca atas perhatiannya.
Kelompok 10
2
DAFTAR ISI
KATA PENGANTAR...........................................................................................................2
DAFTAR ISI..........................................................................................................................3
BAB I PENDAHULUAN…………………………………………………………………..4
BAB IV PEMBAHASAN…………………………………………………………………..7
A. Selection Sort..............................................................................................................7
B. Heap Sort....................................................................................................................11
BAB V PENUTUP
A. Kesimpulan.................................................................................................................14
B. Saran...........................................................................................................................14
DAFTAR PUSTAKA............................................................................................................15
BAB I
3
PENDAHULUAN
B. Tujuan
4
BAB II
KAJIAN TEORITIS
Konsep algoritma selection sort Untuk putaran pertama, akan dicari data dengan nilai
terkecil dan data ini akan ditempatkan di indeks terkecil (data[1]), pada putaran kedua akan
dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[2]). Selama proses,
pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran
data secara fisik terjadi pada akhir proses.
Tehnik pengurutan dgn cara pemilihan elemen atau proses kerja dgn memilih elemen
data terkecil untuk kemudian dibandingkan & ditukarkan dgn elemen pada data awal, dan
seterusnya sampai dengan seluruh elemen sehingga akan menghasilkan pola data yg telah
disort.
5
BAB III
METODOLOGI
Metode selection sort, secara ascending urutan langkah secara garis besar yaitu
JumlahPass=n-1, untuk setiap Pass i=1,2,..,JumlahPass lakukan pencarian elemen, pertukaran
maks dengan elemen ke-n, mengurangi nilai n satu. Selanjutnya langkah rincian pada setiap
Pass yaitu
a) Pass1, cari elemen maksimum di dalam L[1..n], pertukarkan elemen maksimum dengan
elemen L[n], ukuran larik yang belum terurut = n-1.
b) Pass2, cari elemen maksimum di dalam L[1..n-1], pertukarkan elemen maksimum dengan
elemen L[n-1], ukuran larik yang belum terurut = n-16.
c) Pass3, cari elemen maksimum di dalam L[1..n-2], pertukarkan elemen maksimum dengan
elemen L[n-2], ukuran larik yang belum terurut = n-3.
d) Seterusnya sampai dengan Pass n-1, cari elemen maksimum di dalam L[1..2], pertukarkan
elemen maksimum dengan elemen L[2], ukuran larik yang belum terurut = 1.
e) Setelah Pass n-1, elemen yang tersisa adalah L[1], tidak perlu diurutkan lagi karena hanya
satu-satunya.
6
BAB IV
PEMBAHASAN
A. Selection Sort
Dikatakan selection sort karena algoritma ini mencoba memilih satu per satu
elemen data dari posisi awal, untuk mencari data paling kecil dengan mencatat posisi index-
nya saja, lalu dilakukan pertukaran hanya sekali pada akhir setiap tahapan. Algoritma
Selection Sort dilakukan untuk menyempurnakan kekurangan dari bubble sort yang
melakukan pertukaran setiap kali perbandingan memenuhi kriterianya. Ide utama dari
algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar
elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah
jumlah total elemen dikurangi 1.
7
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus dari
pada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai
berikut :
1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam
sebuah list
2. Menukarkan nilai ini dengan elemen pertama list
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
4. Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah
diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada
saat awal, dan bagian list yang elemennya akan diurutkan.
8
Berikut gambaran dari implementasi SelectionSort:
1st Cycle:
(70, 60, 30, 50, 40,20) ->min 60
(70, 60, 30, 50, 40, 20)->min 30
(70, 60, 30, 50, 40, 20)->min 30
(70, 60, 30, 50, 40, 20)->min 30
(70, 60, 30, 50, 40, 20)->min 20
(20, 60, 30, 50, 40, 70) -> swap (70,20)
2nd Cycle:
(20, 60, 30, 50, 40, 70) ->min 30
(20, 60, 30, 50, 40, 70) ->min 30
(20, 60, 30, 50, 40, 70) ->min 30
(20, 60, 30, 50, 40, 70) ->min 30
(20, 30, 60, 50, 40, 70) ->swap (60,30)
3rd Cycle:
(20, 30, 60, 50, 40, 70) -> min 50
(20, 30, 60, 50, 40, 70) -> min 40
(20, 30, 60, 50, 40, 70) -> min 40
(20, 30, 40, 50, 60, 70) -> swap(60,40)
4th Cycle:
(20, 30, 40, 50, 60, 70) -> min 50
(20, 30, 40, 50, 60, 70) -> min 50
(20, 30, 40, 50, 60, 70)
5th Cycle:
(20, 30, 40, 50, 60, 70) -> min 60
(20, 30, 40, 50, 60, 70)
9
Berikut implementasi dari Selection Sort menggunakan Bahasa C:
#include<stdio.h>
int main(){
int arr[]={70,60,30,50,40,20};
int n = sizeof(arr)/sizeof(int);
for(int i=0; i<n – 1; i++){
int idx_low=i;
for(int j=i+1; j<n; j++){
if(arr[idx_low] > arr[j]){
idx_low = j;
}
}
if (idx_low > i){
int temp = arr[i];
arr[i]=arr[idx_low];
arr[idx_low]=temp;
}
}
for(int i=0;i<n;i++){
printf(“%d “,arr[i]);
}
return 0;
}
10
B. Heap Sort
Heapsort merupakan salah satu bentuk dari selection sort yang memiliki kompleksitas
algorima O(n log(n)) yang menggunakan struktur data heap. Algoritma ini bekerja dengan
menentukan elemen terbesar (atau terkecil) dari sebuah daftar elemen, dan diletakkan pada
akhir (atau awal) dari daftar tersebut. Heap sort menyelesaikan sebuah pengurutan
menggunakan struktur data yang disebut heap. Heap merupakan sebuah pohon biner hampir
lengkap dimana isi dari simpul ayah selalu lebih besar dari isi simpul anak-anaknya
sehingga simpul akar selalu merupakan elemen terbesar.
Algoritma :
11
Suatu heap tree adalah Complete Binary Tree (CBT) di mana harga-harga key pada
node-nodenya sedemikian rupa sehingga haga-harga key pada node-node anaknya tidak ada
yang lebih besar dari harga key pada node orang tuanya.
NB : Untuk i adalah posisi node yang ingin dicari left/right childnya atau parent nodenya dan
untuk lambing (└ ┘) adalah floor yaitu pembulatan kebawah missal 3 / 2 = 1,5 dibulatkan
kebawah menjadi 1. Berikut adalah contoh cara memvisualisasikan sebuh array menjadi
sebuah heap tree :
Contoh : Kita memiliki sebuah aray A = 4, 1, 3, 2, 16, 9, 10, 14, 8, 7. Dan untuk
memvisualisasikan array tersebut gunakan rumus yang sudah disediakan dan prosesnya akan
terlihat seperti ini :
12
Kompleksitas Heapsort
Dalam kasus rata-rata atau kasus terjelek, kompleksitas dari heapsort adalah O(n log
n).
Komplesitas tersebut cukup baik untuk metode pengurutan.
Pada kasus rata-rata, quicksort juga memiliki kompleksitas O(n log n), namun
kadang-kadang bila kasus terjelek terjadi, kompleksitas quicksort dapat berubah
menjadi O(n 2).
13
BAB V
PENUTUP
A. Kesimpulan
Selection sort merupakan program yang digunakan utuk mengurutkan angka, jadi
seumpama kita mempunyai data angka yang banyak dan ingin diurutkan kita dapat
menggunakan program ini tanpa harus mengurutkan secara manual. Pada selection sort ini
kita dapat mengurutkan angka dari kecil ke angka yang besar, atau sebaliknya dari yang besar
ke yang kecil.
Perangkat lunak menjelaskan algoritma pengurutan Heap Sort dan gambar keadaan pohon
biner secara bertahap serta menampilkan Form Teori, sehingga dapat membantu pemahaman
mengenai pengurutan dengan metode Heap Sort. Kompleksitas prosedur Build-Heap adalah
O(n), kompleksitas prosedur Heapify adalah O(log n), sehingga kompleksitas algoritma Heap
Sort adalah O(n log n).
B. Saran
Algoritma pengurutan Heap Sort yang terdapat dalam perangkat lunak dapat dikembangkan
dengan class object oriented sehingga dapat dipisahkan secara independen dan dapat
digunakan untuk membangun perangkat lunak lain yang membutuhkan algoritma pengurutan.
Penggambaran proses-proses yang terjadi pada pohon biner dapat ditingkatkan dengan
menambahkan kualitas animasi yang lebih baik. Animasi yang baik bisa didapatkan dengan
aplikasi Macromedia Flash.
14
DAFTAR PUSTAKA
https://saraholiviameily.wordpress.com/2016/12/04/heap-sorting/
file:///C:/Users/user/Downloads/170-Article%20Text-684-1-10-20180214.pdf
http://roofhie.blogspot.com/2013/01/struktur-data-selection-sort.html
file:///C:/Users/Acer/Downloads/Buku_Struktur_data_-_Copy.pdf
15
16