Kelas : IS-3
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.
Penulis
ii
DAFTAR ISI
iii
BAB I
PENDAHULUAN
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.
4
1.3 Tujuan Penulisan
Berdasarkan rumusan makalah diatas, adapun tujuan kami adalah sebagai berikut :
5
BAB II
PEMBAHASAN
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.
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
1) Jarak = N
5) Sudah = true
6) j = 0
8) Jika (Data[j] > Data[j + Jarak] maka tukar Data[j], Data[j + Jarak], Sudah = true
9) j = j + 1
7
Contoh Shell 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.
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.
9
Contoh Insertion Sort
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.
13
Contoh Radix Sort
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.
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.
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
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.
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.
20
Contoh Heap Sort
21
2.1.9 Bubble Sort
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.
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
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)
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.
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.
28
Contoh Strand Sort
29
2.1.13 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
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