Anda di halaman 1dari 33

MAKALAH SORTING

Mata Kuliah Struktur Data

Dosen : Tono Hartono, S.Si, MT

Maisha Ummu Mahadewi TH (10518100)

Amalia Sani Oktoviani (10518101)

Agnia Gina Permata (10518121)

Kelas : IS-3

PRODI S1 SISTEM INFORMASI

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

2019
KATA PENGANTAR

Alhamdulilllah puji syukur senantiasa penulis panjatkan kepada Allah SWT, yang
telah memberikan rahmat, taufik dan hidayahnya sehingga penulis dapat menyelesaikan
makalah dasar manajemen bisnis yang berjudul “Sorting”. Shalawat dan salam semoga selalu
terlimpahkan kepada baginda kita, Nabi Muhammad SAW, keluarga, dan para sahabatnya
yang setia sampai akhir zaman.

Makalah ini disusun untuk memenuhi tugas mata kuliah Struktur Data. Penulis
menyampaikan ucapan terima kasih kepada :

1. Bapak Tono Hartono, S.Si, MT selaku dosen mata kuliah Struktur Data yang telah
memberikan bimbingan, dorongan dan nasehat yang baik kepada kami
2. Penulis juga mengucapkan terima kasih kepada teman-teman dan semua pihak
yang telah membantu dalam menyelesaikan tugas ini.
Penulis menyadari dalam penyusunan makalah ini masih terdapat banyak kekurangan
dan kesalahan. Oleh karena itu, kritik dan saran yang membangun sangat membantu penulis
harapkan demi perbaikan pada masa yang akan dating. Semoga makalah ini dapat bermanfaat
bagi penulis khususnya dan bagi para pembaca pada umumnya.

Bandung,10 Mei 2019

Penulis

ii
DAFTAR ISI

KATA PENGANTAR ...............................................................................................................ii


DAFTAR ISI............................................................................................................................ iii
BAB I PENDAHULUAN .......................................................................................................... 4
1.1 Latar Belakang ............................................................................................................ 4
1.2 Rumusan Masalah ....................................................................................................... 4
1.3 Tujuan Penulisan ......................................................................................................... 5
BAB II PEMBAHASAN ........................................................................................................... 6
2.1 Klasifikasi Algoritma Pengurutan Berdasarkan Proses .............................................. 6
2.1.1 Shell Sort ................................................................................................................. 7
2.1.2 Insertion Sort ........................................................................................................... 8
2.1.3 Merge Sort ............................................................................................................. 10
2.1.4 Radix Sort .............................................................................................................. 13
2.1.5 Quick Sort .............................................................................................................. 14
2.1.6 Selection Sort ......................................................................................................... 17
2.1.7 Counting Sort ......................................................................................................... 18
2.1.8 Heap Sort ............................................................................................................... 19
2.1.9 Bubble Sort ............................................................................................................ 22
2.1.10 Bucket Sort ............................................................................................................ 23
2.1.11 Tree Sort ................................................................................................................ 26
2.1.12 Strand Sort ............................................................................................................. 28
2.1.13 Exchange Sort ........................................................................................................ 30
BAB III KESIMPULAN DAN SARAN ................................................................................. 32
DAFTAR PUSTAKA .............................................................................................................. 33

iii
BAB I

PENDAHULUAN

1.1 Latar Belakang


Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek
menggunakanaturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan
kumpulanelemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam
tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu
proses sorting :

1. Urut naik (ascending)


Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar.
2. Urut turun (descending)
Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan
mengurutkan data. Data yang terurut mudah untuk dicari& mudah untuk diperiksa dan mudah
untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk
dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan
mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun melakukan
penggabungan data. Metode-metode sorting meliputi : Insertion Sort (Metode Penyisipan),
Selection Sort (Metode Seleksi), Bubble Sort (Metode Gelembung), Shell Sort (Metode
Shell), Bucket Sort, Merge Sort (Metode Penggabungan), Quick Sort (Metode Cepat),
Counting Sort (Metode Mencacah), Heap Sort (Metode Tumpukan), Tree Sort, Exchange
Sort, Radix Sort (Metode Tanpa Perbandingan), Strand Sort.

1.2 Rumusan Masalah

Setelah mengidentifikasi masalah sesuai dengan judul makalah, maka terdapat


beberapa masalah yang terkait dengan Sorting, yaitu :

a) Apa saja macam macam klasifikasi algoritma pengurutan berdasarkan proses?


b) Apa saja algoritma dari berbagai macam sorting?
c) Bagaimana contoh implementasi dari berbagai macam sorting?

4
1.3 Tujuan Penulisan

Berdasarkan rumusan makalah diatas, adapun tujuan kami adalah sebagai berikut :

a) Untuk mengetahui klasifikasi algoritma pengurutan berdasarkan proses.


b) Untuk mengetahui algoritma dari berbagai macam sorting.
c) Untuk mengetahui implementasi dari berbagai macam sorting.

5
BAB II

PEMBAHASAN

2.1 Klasifikasi Algoritma Pengurutan Berdasarkan Proses

Banyak klasifikasi yang dapat digunakan untuk mengklasifikasikan algoritma-


algoritma pengurutan, misalnya secara kompleksitas, teknik yang dilakukan, stabilitas,
memori yang digunakan, rekursif/tidak, ataupun proses yang terjadi. Namun agar relevan
dengan topik masalah ini, pengklasifikasian yang disajikan adalah menurut langkah yang
terjadi dalam proses pengurutan tersebut. Pengklasifikasiannya adalah sebagai berikut :

1) Exchange Sort
Dalam prosesnya, algoritma-algoritma pengurutan yang diklasifikasikan sebagai
exchange sort melakukan pembandingan antar data, dan melakukan pertukaran apabila
urutan yang didapat belum sesuai.
Contohnya adalah : Bubble sort, Cocktail sort, Comb sort, Gnome sort, Quicksort.
2) Selection Sort
Prinsip utama algoritma dalam klasifikasi ini adalah mencari elemen yang tepat untuk
diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah
data tersebut ditemukan. Algoritma yang dapat diklasifikasikan ke dalam kategori ini
adalah : Selection sort, Heapsort, Smoothsort, Strand sort.
3) Insertion Sort
Algoritma pengurutan yang diklasifikasikan ke dalam kategori ini mencari tempat
yang tepat untuk suatu elemen data yang telah diketahui ke dalam subkumpulan data
yang telah terurut, kemudian melakukan penyisipan (insertion) data di tempat yang tepat
tersebut.
Contohnya adalah : Insertion sort, Shell sort, Tree sort, Library sort, Patience sorting.
4) Merge Sort
Dalam algoritma ini kumpulan data dibagi menjadi subkumpulan-subkumpulan yang
kemudian subkumpulan tersebut diurutkan secara terpisah, dan kemudian digabungkan
kembali dengan metode merging. Dalam kenyataannya algoritma ini melakukan metode
pengurutan merge sort juga untuk mengurutkan subkumpulan data tersebut, atau dengan
kata lain, pengurutan dilakukan secara rekursif. Contohnya adalah : Merge sort.

6
5) Non-Comparison Sort
Sesuai namanya dalam proses pengurutan data yang dilakukan algoritma ini tidak
terdapat pembandingan antardata, data diurutkan sesuai dengan pigeon hole principle.
Dalam kenyataanya seringkali algoritma non-comparison sort yang digunakan tidak
murni tanpa pembandingan, yang dilakukan dengan menggunakan algoritmaalgoritma
pengurutan cepat lainnya untuk mengurutkan subkumpulan-subkumpulan datanya.
Contohnya adalah : Radix sort, Bucket sort, Counting sort, Pigeonhole sort, Tally sort.

2.1.1 Shell Sort

Shell Sort merupakan perbaikan metode pengurutan sisip dan merupakan salah satu
algoritma sorting pada sebuah deklarasi array.

 Kelebihan :
- Operasi pertukarannya hanya sekali.
- Mudah menggabungkaannya kembali.
- Kompleksitas selection relative lebih kecil.
 Kekurangan :
- Membutuhkan methot tambahan
- Sulit untuk membagi sbuah masalah pada data

Algoritma Shell Sort

1) Jarak = N

2) Selama (Jarak > 1) kerjakan baris 3 sampai dengan 9

3) Jarak = Jarak / 2. Sudah = false

4) Kerjakan baris 4 sampai dengan 8 selama Sudah = false

5) Sudah = true

6) j = 0

7) Selama (j < N – Jarak) kerjakan baris 8 dan 9

8) Jika (Data[j] > Data[j + Jarak] maka tukar Data[j], Data[j + Jarak], Sudah = true

9) j = j + 1

7
Contoh Shell Sort

2.1.2 Insertion Sort

Insertion Sort merupakan algoritma sorting, terutama untuk mengurutkan data dengan
jumlah elemen sedikit. Dimana Input berupa deretan angka sejumlah n buah data dan Output
berupa permutasi (pengurutan) sejumlah n angka dari input, dimana hasilnya berupa data
yang sudah terurut secara ascending maupun descending.

Cara kerja insertion sort sebagaimana namanya. Pertama-tama, dilakukan iterasi,


dimana di setiap iterasi insertion sort memindahkan nilai elemen, kemudian menyisipkannya
berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dari proses iterasi,
seperti biasa, terbentuklah bagian yangtelah di-sorting dan bagian yang belum.

 Keunggulan :
- Sederhana dalam penerapannya
- Mangkus dalam data yang kecil.

8
- Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat
dibandingkan dengan Quicksort.
- Mangkus dalam data yang sebagian sudah terurut.
- Lebih mangkus dibanding Bubble Sort dan Selection Sort.
- Loop dalam pada Insertion Sort sangat cepat, sehingga membuatnya salah satu
algoritma pengurutan tercepat pada jumlah elemen yang sedikit.
- Stabil.
 Kekurangan :
- Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen
larik.
- Untuk larik yang jumlahnya besar ini tidak praktis.
- Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan
mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
- Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam
pengurutan elemen dalam jumlah besar.

Algoritma Insertion Sort :

1) Simpan nilai Ti kedalam variabel sementara, dengan I = 1.


2) Bandingkan nilainya dengan elemen sebelumnya.
3) Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti
dengan nilai Ti-1 tersebut. Decrement I (kurangi nilainya dengan 1).
4) Lakukan terus poin ketiga, sampai Ti-1 Ti.,.
5) Jika Ti-1 Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan
sebelumnya.
6) Ulangi dengan I di-increment (ditambah satu) langkah dari poin 1 di atas.

9
Contoh Insertion Sort

2.1.3 Merge Sort


Merge Sort merupakan algoritma yang berdasarkan strategi divide and conquer. Cara
kerja algoritma ini yaitu memecah susunan data menjadi sublists – sublist kecil, kemudian
dilakukan proses pemandingan, penukaran, dan penggabungan data. Berulang sampai data
tersebut sudah terurut.

- Divide : Membagi masalah menjadi beberapa submasalah berukuran lebih kecil.


- Conquer : Memecahkan masing-masing submasalah (secara rekursif).
- Combine : Mengabungkan solusi masing-masing submasalah sehingga membentuk
solusi masalah semula.

 Keunggulan :
- Algoritma yang sangat efisien dalam penggunaannya sebab setiap list selalu dibagi bagi
menjadi list yang lebih kecil, kemudian digabungkan lagi sehingga tidak perlu
melakukan banyak perbandingan.
- Cocok untuk sorting akses datanya lambat misalnya tape drive atau hard disk.
- Cocok untuk sorting data yang biasanya diakses secara sequentially (berurutan),
misalnya linked list, tape drive, dan hard disk.

10
 Kekurangan :
- Membutuhkan ruang memori yang besar.

Algoritma Merge Sort, dilakukan dengan menggunakan cara divide and conquer yaitu
dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya
kembali.

1) Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika
data genap) atau setengah minus satu (jika data ganjil) dari seluruh data.
2) Kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya
terdiri dari satu data tiap blok.
3) Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah
data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1
dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser
menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok
utuh seperti awalnya.
4) Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursif
untuk penyelesaiannya.

11
Contoh Merge Sort

12
2.1.4 Radix Sort
Radix sort adalah algoritma non-comparation sort atau pengurutan tanpa
perbandingan. Metode ini mengklarifikisi sebuah data sesuai dengan kategori urutan tertentu
dan setiap kategori diurutkan lagi dan seterusnya sesuai dengan kebutuhan. Kemudian
bagian-bagian dari kategori tersebut akan digabungkan kembali.

Catatan : data yang diurutkan pertama kali yaitu berupa input nilai-nilai yang dimasukkan
pertama kali berdasarkan radix pertamanya, lalu diteruskan atau diurutkan lagi berdasarkan
radix keduanya, dst.

 Kelebihan :
- Algoritmanya sangat baik.
- Algoritma Radix Sort sangat efektif untuk jumlah data yang banyak.
- Algoritmanya mudah dimengerti.
 Kekurangan :
- Proses pengerjaannya rumit dan kurang fleksibel.
- Sulit untuk memahami konsep dasarnya.
- Membutuhkan bucket untuk data yang sedang diurutkan.

Algoritma Radix Sort

1) Ambil digit terkecil dari setiap data.


2) Kelompokkan data-data berdasarkan digit. Untuk digit data sama, jangan ubah urutan
data-data.
3) Ulangi langkah pertama untuk digit selanjutnya.

13
Contoh Radix Sort

2.1.5 Quick Sort


Quick Sort adalah algoritma sorting yang berdasarkan pembanding dengan metode
divide and conqueror, sangat berbeda dengan Radix Sort yang tanpa pembanding. Disebut
Quick Sort karena algoritma Quick Sort mengurutkan dengan sangat cepat atau Quick Sort
juga bisa disebut dengan exchange sort, karena konsepnya yang membuat partisi-partisi dan
Sort yang dilakukan tiap partisi.

 Kelebihan :
- Algoritma sederhana dan mudah diterapkan pada berbagai bahasa pemrograman dan
arsitektur mesin secara efisien.
- Algoritma pengurutan yang lebih cepat dengan perbandingan seperti Merge Sort dan
Heap Sort.

14
- Melakukan proses secara langsung pada input(in-place) dengan sedikit tambahan
memory.
- Bisa digunakan dengan baik untuk input angka daan karakter.
 Kekurangan :
- Sedikit kesalahan saja didalam program bisa menyebabkan program tidak beraturan
atau output-an tidak benar bahkan eksekusi tidak akan pernah selesai.
- Memiliki ketergantungan terhadap data yang dimasukkan.
- Sifatnya yg kurang stable karena input yang akan dirubah pada hasil akhirnya (output)
bernilai sama.
- Memiliki katergantungan terhadap data yang dimasukkan.
- Pada penerapan rekursif (memanggil dirinya sendiri) bahkan dalam kasus terburuk bisa
dapat menghabiskan stack dan memacetkan program.

Algoritma Quick Sort

1) Pilih elemen pivot.


2) Pindahkan elemen array yang lebih kecil dari elemen pivot ke sebelah kiri pivot, dan
elemen yang lebih besar dari elemen pivot ke sebelah kanan pivot.
3) Ulangi langkah 1 dan 2 untuk masing masing partisi yang terbentuk dari langkah 2.

15
Contoh Quick Sort

16
2.1.6 Selection Sort
Selection sort adalah kombinasi antara sorting dan searching. Untuk setiap proses,
akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar
akan dipertukarkan ke posisi yang tepat di dalam array.

 Keunggulan :
- Algoritma ini sangat rapat dan mudah untuk diimplementasikan.
- Mempercepat pencarian.
- Mudah menentukan data maksimum /minimum.
- Mudah menggabungkannya kembali.
- Kompleksitas selection sort relatif lebih kecil.
 Kekurangan :
- Membutuhkan method tambahan.
- Sulit untuk digabungkan kembali.
- Perlu dihindari untuk penggunaan data lebih dari 1000 tabel, karena akan menyebabkan
kompleksitas yang lebih tinggi dan kurang praktis.

Algoritma Selection Sort

1) Mencari data terkecil dari data pertama sampai data terakhir, kemudian di tukar
posisinya dengan data pertama.
2) Mencari data terkecil dari data kedua sampai data terakhir, kemudian di tukar dengan
posisinya dengan data kedua.
3) Mencari data terkecil dari data ketiga sampai data terakhir, kemudian di tukar posisinya
dengan data ketiga
4) Dan seterusnya semua data turut naik, apabila terdapat n buah data yang akan diurutkan
maka membutukan (n-1) langkah pengurutan, dimana data terakhir yaitu data ke-n tidak
perlu diurutkan karena hanya tinggal satu-satunya.

17
Contoh Selection Sort

2.1.7 Counting Sort


Counting sort merupakan algoritma sorting (pengurutan) yang dapat dilakukan apabila
data dapat dinyatakan sebagai bilangan yang menyatakan besarannya. Rentang nilai bilangan
itu tidak boleh terlalu besar, karena akan dibuat array yang besarnya sama dengan
rentangnya. Metode ini hanya cocok digunakan bila data yang digunakan bertipe integer dan
dibatasi pada range tertentu. Biasanya counting sort hanya digunakan untuk mengurutkan
angka.

 Keunggulan :
- Dapat mengurutkan dengan waktu yang relatif lebih singkat, karena tidak
membandingkan dengan elemen lain.
 Kelemahan :
- Menggunakan array yang terlalu banyak.

18
Algoritma Counting Sort

1) Memilih sebuah elemen untuk dijadikan poros atau pivot point (biasanya elemen paling
kiri dari tabel)
2) Membagi tabel menjadi dua bagian, satu dengan elemen yang lebih besar dari poros dan
satu lagi untuk elemen yang lebih kecil dari poros.
3) Mengulang algoritma untuk kedua buah tabel secara rekrusif.

Contoh Counting Sort

2.1.8 Heap Sort

Heap Sort adalah sebuah algoritma pengurutan yang paling lambat dari algoritma
yang memiliki kompleksitas O(n log n). Tetapi tidak seperti algoritma Merge Sort dan Quick
Sort, algoritma Heap Sort tidak memerlukan rekursif yang besar atau menggunakan banyak
tabel (array). Oleh karena itu, Heap Sort adalah pilihan yang baik untuk sebuah kumpulan
data yang besar.

19
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.
 Keunggulan :
- Algoritma Heap Sort banyak digunakan karena efisiensi waktunya.
- Penggunaan memori yang sedikit.
 Kekurangan :
- Membutuhkan banyak ruang memori untuk proses pengurutan.
- Algoritmanya yang memilki kompleksitas yang besar.

Algoritma Heap Sort


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

20
Contoh Heap Sort

21
2.1.9 Bubble Sort

Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan


cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa
dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan
berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan
dengan lambat menggelembung ke posisinya yang tepat.

 Keunggulan :
- Metode yang paling simple.
- Mudah dipahami algoritmanya.
 Kelemahan :
- Merupakan metode pengurutan yang paling tidak efisien.
- Pada saat mengurutkan data yang sangat besar akan mengalami kelambatan luar biasa,
atau dengan kata lain kinerja memburuk cukup signifikan ketika data yang diolah jika
data cukup banyak.
- Jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya sudah
cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap data yang
lain untuk menentukan posisinya.

Algoritma Bubble Sort


1) Membandingkan data ke-I dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai
maka tukar (data ke-I = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya
tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan
ascending (A-Z) kondisi tidak sesuai adalah data ke-I > data ke-i+1, dan sebaliknya
untuk urutan descending (A-Z).
2) Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini
sampai data terakhir. Contoh: 1 dengan 2; 2 dengan 3; 3 dengan 4; 4 dengan 5 ... ; n-1
dengan n.
3) Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dengan n.
Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-
1. Mulai dari data ke-1 dengan data ke-2, dst.
4) Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.

22
Contoh Kasus Bubble Sort
Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini
(ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi :
Iterasi ke-1 : 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi ke-2 : 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi ke-3 : 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi ke-4 : 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran)  proses selesai

Contoh Bubble Sort

2.1.10 Bucket Sort

Bucket sort merupakan salah satu bentuk algoritma divide concuer melalui metode
partisi dan berjalan dalam keadan linier time (Wilkinson & Allen, 2005). Secara teoritis
proses pengurutan dilakukan dengan membagi dan memecah himpunan array ke dalam
beberapa ember virtual secara merata. Adapin ember yang dijadikan partisi n data kemudian
diurutkan secara individual, menggunakan algoritma sorting yang berbeda atau melalui
penerapan Bucket Sort secara rekursif. Ember virtual yang merupakan partisi atas n array
dan merupakan proses acak yang mendistribusikan elemen seragam pada interval [0,1],
dimana pembagian tersebut dilakukan merata sama besar. Dengan asumsi input dalam n

23
elemen pada array, untuk masing-masing A memenuhi 0 ≤ A [i] ≤ I, sehingga
membutuhkan array bantu B yang merupakan ember sub interval (Wilkinson & Allen,2005)

Algoritma Bucket Sort

1) Menginisiasi sejumlah m ember yang akan digunakan (bucket).


2) Membagi n element data yang diurutkan ke dalam, m bucket (wadah), dari suatu
himpunan data S dengan interval [a,b].
3) S dibagi ke dalam m sub interval (buckets) sama rata.
4) Satu wadah akan mendapatkan n/m elemen data.
5) Bucket diurutkan dengan menggunakan algoritma sekuensial.
6) Lihat semua bucket kemudian kembalikan ke array aslinya.

24
Contoh Bucket Sort

25
2.1.11 Tree Sort

Tree sort adalah teknik mengurutkan data dengan menggunakan struktur data tree.

 Kelebihan :
- Data langsung urut begitu dimasukkan, efektif untuk jumlah data yang kecil.
 Kelemahan :
- Tidak efektif untuk jumlah data yang besar.

Algoritma Tree Sort

1) Ada satu buah node yang tidak memiliki node induk. Node ini disebut root atau akar
pohon.
2) Setiap node lain dalam pohon memiliki satu induk. Tidak ada loop dalam sebuah binary
tree. Artinya tidak mungkin untuk mengikuti rantai pointer yang dimulai di node tertentu
dan kembali di node yang sama.
3) Sebuah node yang tidak memiliki anak disebut daun atau leaf. Node daun dapat dikenali
dengan cara mengetahui bahwa pointer kiri dan kanan dari sebuah node adalah NULL.

26
Contoh Tree Sort

27
2.1.12 Strand Sort

Algoritma Strand Sort bertujuan untuk menjadikan bagian sisi kiri array terurutkan
sampai dengan seluruh array berhasil diurutkan. Metode ini mengurutkan bilangan-bilangan
yang telah dibaca dan berikutnya secara berulang akan menempatkan bilangan-bilangan
dalam array yang telahterbaca kesisi kiri array yang telah terurut.

 Kelebihan :
- Stabil dan sederhana dalam penerapannya.
- Proses pengurutan lebih cepat dalam data yang sebagian sudah terurut dan lebih
cepat dalam data yang kecil.
- Jika list sudah terurut atau sebagian terurut maka algoritma Strand Sort akan
lebih cepat daripada Quick Sort.
- Lebih cepat dibandingkan Bubble Sortkarena dapat mengurangi jumlah
perbandingan.
- Loop (Perulangan) pada Strand Sort sangat cepat, sehingga termasuk menjadi salah
satu algoritma pengurutan tercepat dalam jumlah elemen yang sedikit.
 Kekurangan :
- Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk
elemen List.
- Untuk List yang jumlahnya besar algoritma Strand Sort tidak praktis.

Algoritma Strand Sort

1) Mencari data yang terkecil dari data pertama sampai terakhir.


2) Kemudian data tersebut dipertukarkan dari data pertama.
3) Dengan demikian, data pertama mempunyai nilai paling kecil dibanding dengan data
lain.
4) Setelah itu data terkecil mulai dicari lagi dari data ke-i (dimana i dimulai dari data
ke-2 sampai dengan data terakhir).
5) Jika ditemukan data yang lebih kecil maka data tersebut ditempatkankan kedepan
sesuai dengan posisi yang seharusnya.

28
Contoh Strand Sort

29
2.1.13 Exchange Sort

Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam


array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu
menjadi elemen pusat (pivot).

Algoritma Exchange Sort

a) Ascending
1. Jika terdapat elemen sebelumnya lebih besar dari elemen berikutnya maka tukar.
2. Jika terdapat elemen sesudahnya lebih kecil dari elemen sebelumnya maka tukar.
b) Descending
1. Jika terdapat elemen sebelumnya lebih kecil dari elemen berikutnya maka tukar.
2. Jika terdapat elemen sesudahnya lebih besar dari elemen sebelumnya maka tukar.

30
Contoh Exchange Sort

31
BAB III

KESIMPULAN DAN SARAN

3.1 Kesimpulan

Algoritma yang mudah dalam hal implementasi adalah Bubble Sort, Selection Sort,
dan Insertion Sort. Ketiganya memiliki kompleksitas O(n2). Di antara algoritma ini, yang
paling efisien adalah Insertion Sort. Algoritma yang lebih mangkus adalah Merge Sort dan
Quick Sort dengan kompleksitasnya adalah O(n log n). Adapun yang paling mangkus dari
algoritma ini adalah Quick Sort.

3.2 Saran

Adapun saran yang dapat diberikan kepada pembaca dalam hal ini hendaknya dalam
pemilihan algoritma pengurutan yang tepat perlu memperhatikan kebutuhan memori, waktu
eksekusi, implementasi algoritma atau penanganan kasus-kasus tertentu. Disamping itu, perlu
diadakannya penelitian yang lebih mendalam agar mendapatkan data yang valid sebagai
referensi.

32
DAFTAR PUSTAKA

33

Anda mungkin juga menyukai