Anda di halaman 1dari 16

MINI RESEARCH

“SELECTION SORT & HEAP SORT”


Dosen Pengampu:

Uli Basa Sidabutar,S.Kom.,M.Pd.

DISUSUN OLEH :

Bima Sulistia (5193151028)

Ida Yohana Br. Panjaitan (5193351016)

Yuli Hariani (5193151021)

JURUSAN PENDIDIKAN TEKNIK ELEKTRO

PENDIDIKAN TEKNOLOGI INFORMATIKA DAN KOMPUTER

FAKULTAS TEKNIK

UNIVERSITAS NEGERI MEDAN

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”

Semoga makalah ini dapat dipergunakan sebagai acuan,petunjuk maupun pedoman


bagi pembaca. Kami menyadari bahwa tugas ini masih jauh dari kesempurnaan, apabila
dalam tugas ini terdapat banyak kekurangan dan kesalahan kami mohon maaf karena
keterbatasan ilmu dan pemahaman kami terbatas.

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.

Medan, Mei 2020

Kelompok 10

2
DAFTAR ISI

KATA PENGANTAR...........................................................................................................2

DAFTAR ISI..........................................................................................................................3

BAB I PENDAHULUAN…………………………………………………………………..4

A. Latar Belakang Masalah..............................................................................................4


B. Tujuan..........................................................................................................................4
BAB II KAJIAN TEORITIS………………………………………………………………..5

BAB III METODOLOGI…………………………………………………………………...6

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

A. Latar Belakang Masalah

Pengurutan atau Sorting merupakan suatu proses mengatur susunan data-data


menurut syarat tertentu. Meskipun pengurutan ini sepertinya hanya sebuah masalah klasik
dalam keinformatikaan,namun perannya tidak dapat dipisahkan terutama dalam pengolahan
data. Suatu pengolahan data biasanya akan lebih efisien jika datanya telah
terurut,seperti Binary Search misalnya. Mengingat pentingnya pengurutan dalam
penggunaannya dalam hal keinnformatikaan, maka perlu diketahui algoritma mana yang
sebenarnya paling efisien untuk dipakai. Meskipun suatu algoritma pengurutan mempunyai
kelebihan dan keterbatasan masing-masing, kompleksitas dan keefisiensiannya tetap
harusdipertimbangkan.

B. Tujuan

- Algoritma pengurutan sederhana salah satunya adalah Selection Sort. Ide dasarnya


adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur
data.
- Algoritma pengurutan Heap Sort merupakan salah satu metode pengurutan tercepat
setelah Merge Sort dan Quick Sort dengan kompleksitas O(n log n).

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.

Procedurequicksort(data,L,R: integer); Var i,j,x : integer; Begin x = data[(L+R) div 2]; i = L;


j = R; while (i< =j) do begin while (data[I] < x ) do inc( I ); while ( data[J] > x ) do dec( J );
If( I < = J ) then tukar(data[I],data[j]); inc( I ); Dec( J ); End; End; If ( L < J ) then
quicksort(data,L, J ); If ( I < R ) then quicksort(data,i, R ); End;

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

Sorting merupakan hal yang penting di dalam pemrograman dan memilih


teknik sorting yang benar merupakan hal yang sangat penting di dalam pemrograman. Ada
banyak teknik sorting  yang bisa kita gunakan, Sebagai materi kami kita akan
membahas selection sort.

Selection sort merupakan teknik sorting yang paling sederhana, hal pertama yang akan


dilakukan algoritma selection sort adalah menemukan elemen terkecil dalam array kita dan
menukarnya (swap) dengan elemen yang ada di posisi pertama, kemudian algoritma ini
akan mengulangi hal yang sama lagi yaitu mencari elemen terkecil yang ada di dalam array
dan kemudian menukarnya (swap) dengan elemen yang ada di posisi kedua (mengingat
elemen di posisi pertama sudah berhasil kita sorting). Proses ini akan terus berlanjut sampai
semua elemen yang ada di dalam array telah berhasil kita sorting.

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 :

1. Buat suatu heap.


2. Ambil isi dari root masukkan kedalam sebuah array.
3. Hapus element root dengan mempertahankan properti heap.
4. Ulangi sampai tree menjadi kosong

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.

Heap tree terbagi menjadi 2 jenis yaitu Max-Heap dan Min-Heap, dimana max-heap


adalah kondisi heap tree yang memiliki nilai tertinggi berada di node root dan setiap child
node memiliki nilai yang lebih kecil dari nilai yang dimiliki parent nodenya. Sedangkan pada
min-heap adalah kondisi kebalikan dengan max-heap, pada min-heap nilai terkecil berada di
node root dan setiap child node memiliki nilai yang lebih besar dari nilai yang dimiliki
parent nodenya. Pada metode heap sort jenis heap tree yang digunakan adalah Max-Heap.
Dan untuk memvisualisasikan sebuah array menjadi sebuah heap tree adalah dengan cara
mencari node root terlebih dahulu yaitu node pertama node pertama sebuah heap tree adalah
index pertama di array yaitu index 0 akan tetapi pada heap tree node awal berada di posisi 1
berbeda dengan array yang memiliki index awal yaitu index 0. Setelah node root telah
ditemukan maka sekarang tinggal mencari child node dari node root dan child node terbagi
menjadi 2 yaitu left child dan right child dan untuk mencari left child, right child, dan parent
digunakan rumus sebagai berikut :

Left Child                       : 2i (Contoh : Left child dari 1 adalah 2 x 1 = 2)


Right Child                     : 2i + 1 (Contoh : Right Child dari 1 adalah (2 x 1) + 1 = 3)
Parent                              : └ i/2 ┘ (Contoh : Parent dari 3 adalah 3 / 2 = 1 )

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

Anda mungkin juga menyukai