ALGORITMA
PENGURUTAN DALAM
BAHASA PEMOGRAMAN
ALGORITMA & PEMOGRAMAN
SISTEM INFORMASI - A
DEA SAFRYDA PUTRI
1910631250039
A. BUBBLE SORT
Algoritma Bubble Sort adalah pengurutan dengan cara pertukaran data dengan data
di sebelahnya secara terus menerus sampai pada satu iterasi tertentu dimana tidak
ada lagi perubahan yang signifikan.
Proses pertama:
(3 1 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 3 2 4 8)
Proses kedua:
(1 3 2 4 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
Proses ketiga:
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
Tingkat efisiensinya yang kurang. Bubble Sort ini merupakan metode pengurutan
yang tidak efisien, khususnya ketika menangani data yang berjumlah besar. Hal
tersbeut karena ketika mengurutkan data yang sangat besar akan sangat lambat
prosesnya.
Jumlah pengulangan yang dilakukan oleh algortima ini akan tetap sama jumlahnya,
meskipun data yang diurutkan sudah cukup terurut.
B. QUICK SORT
Quick Sort adalah algoritma pengurutan yang sangat cepat dengan tipe
penyelesaian divide and conquer. sehingga cocok untuk mengurutkan data dalam
jumlah besar.
Proses pengurutan Quick Sort adalah sebagai berikut:
Proses pengurutan berhenti bila pointer kiri overlap dengan pointer kanan (langkah
8 di gambar atas), sekaligus membagi (divide) 2 bagian yang akan diurutkan
selanjutnya; yaitu partisi kiri dan kanan.
Gambar: Proses sorting tahap ke-2
C.SHELL SORT
Shell sort adalah algoritma penyortiran yang sangat efisien dan didasarkan pada
algoritma penyortiran. Algoritma ini menghindari pergeseran besar seperti dalam
kasus penyisipan, jika nilai yang lebih kecil ke paling kanan dan harus dipindahkan
ke paling kiri.
Algoritma ini menggunakan semacam penyisipan pada elemen yang tersebar luas,
pertama untuk mengurutkannya dan kemudian mengurutkan elemen yang kurang
luas. Jarak ini disebut sebagai interval. Interval ini dihitung berdasarkan rumus
Knuth –
Contoh:
D. SELECTION SORT
Algoritma selection sort adalah algoritma yang melakukan pengurutan secara
berulang-ulang hingga didapatkan hasil pengurutan yang sesuai.
Algoritma selection sort akan memindai nilai terkecil dari suatu kumpulan data dan
jika ada, data teresebut akandiletakkan pada urutan pertama. Begitu selanjutnya
untuk urutan kedua dan seterusnya. Cara kerja dari selection sort ini dalah sebagai
berikut.
1. Melakukan pengecekan dimulai dari data pertama hingga data ke-n.
2. Menentukan data dengan indeks minimum (jika acending) atau maksimum
(jika descending) dalam sebuah data tersebut.
3. Menukarkan data dengan indeks minimum (jika ascending) atau maksimum
(jika descending) dengan bilangan pertama (i = 1) dari data tersebut.
4. Mengulangi langkah di atas untuk sisa data bilangan berikutnya (i = i +1)
sampai didapatkan urutan yang sesuai.
Kelebihan
1. Algoritma ini sangat rapat dan mudah untuk diimplementasikan.
2. Operasi pertukarannya hanya dilakukan sekali saja.
3. Waktu pengurutan dapat lebih ditekan.
4. Mudah menggabungkannya kembali.
5. Kompleksitas selection sort relatif lebih kecil.
Kekurangan
1. Membutuhkan method tambahan.
2. Sulit untuk membagi masalah.
E. INSERTION SORT
Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua
elemen data pertama, mengurutkannya, kemudian mengecek elemen data
berikutnya satu persatu dan membandingkannya dengan elemen data yang telah
diurutkan. Karena algoritma ini bekerja dengan membandingkan elemen-elemen
data yang akan diurutkan, algoritma ini termasuk pula dalam comparison-based
sort.
Ide dasar dari algoritma Insertion Sort ini adalah mencari tempat yang
"tepat" untuk setiap elemen array, dengan cara sequential search. Proses ini
kemudian menyisipkan sebuah elemen array yang diproses ke tempatnya ang
seharusnya. Proses dilakukan sebanyak N-1 tahapan (dalam sorting disebut sebagai
"pass"), dengan indeks dimulai dari 0. Proses pengurutan dengan menggunakan
algoritma Insertion Sort dilakukan dengan cara membandingkan data ke-i (dimana
i dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika
ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai
dengan posisi yang seharusnya.
Berikut merupakan Program Insertion Sort dengan Bahasa Pemograman C++ :
Tampilan program setelah diRun :
Kelebihan
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.
F. MERGE SORT
Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang
untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak
memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang
terlalu besar.
Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide
and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian
kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian
dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus
satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali
untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok.
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. Sehingga metode merge sort
merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.
1. Divide, Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer, Conquer setiap bagian dengan memanggil prosedur merge
sort secara rekursif
3. Kombinasi, Mengkombinasikan dua bagian tersebut secara rekursif untuk
mendapatkan rangkaian data berurutan
Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian
yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen
tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.
Simulasi
Contoh Perhitungan
Kelebihan
Kekurangan
- Membutuhkan setidaknya ruang atau emori dua kali lebih besar karena dilakukan
secara rekursif.
G. HEAP SORT
Heap sort adalah sebuah metode sorting (pengurutan) angka pada sebuah array
dengan cara menyerupai binary tree, yaitu dengan cara memvisualisasikan sebuah
array menjadi sebuah binary tree yang nantinya pada binary tree tersebut nilai pada
masing-masing index array akan diurutkan. Pada heap sort terdapat 3 bagian
yaitu Node, Edge, dan leaf dimana node itu adalah setiap index yang berada pada
array, edge adalah garis yang menghubungkan tiap node dan leaf adalah setiap
node yang tidak memiliki child node (node turunan).
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 :