Anda di halaman 1dari 27

IMPLEMENTASI

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.

Algoritma ini menggunakan perbandingan dalam operasi antar elemennya. Contoh


di bawah ini, merupakan gambaran dari penerapan algoritma Bubble Sort dengan
array “3 1 4 2 8”.

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)

Berikut merupakan Program Bubble Sort dengan Bahasa pemograman C++ :


Tampilan program saat diRun :
Kelebihan yang dimiliki oleh algoritma ini:

 Algoritma ini adalah metode paling sederhana untuk mengurutkan data.


 Selain sederhana, algoritma ini juga mudah dipahami.

 Kekurangan dari algortima ini adalah sebagai berikut:

 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

Proses pengurutan dilakukan sama dengan langkah sebelumnya (rekursif) dan


dilakukan pada partisi kiri dan kanan. Pembagian partisi berhenti bila tiap partisi
hanya menyisakan satu elemen data saja (lihat warna hijau pada langkah 4 di atas).
Gambar: Proses sorting tahap ke-3

Ketika proses pengurutan dilakukan secara rekursif (berulang), maka menghasilkan


partisi hanya satu elemen saja dan kemudian digabung kembali sehingga terlihat
bahwa data telah berurutan.

Program Quick Sort dengan Bahasa pemograman C++ :


Tampilan setelah Program di Run :

Kelebihan dan Kelemahan Algoritma Quick Sort

Beberapa hal yang membuat quick sort unggul:


 Secara umum memiliki kompleksitas O(n log n).
 Algoritmanya sederhana dan mudah diterapkan pada berbagai bahasa
pemrograman dan arsitektur mesin secara efisien.
 Dalam prakteknya adalah yang tercepat dari berbagai algoritma pengurutan
dengan perbandingan, seperti merge sort dan heap sort.
 Melakukan proses langsung pada input (in-place) dengan sedikit tambahan
memori.
 Bekerja dengan baik pada berbagai jenis input data (seperti angka dan
karakter).

Namun terdapat pula kelemahan quick sort:

 Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak


beraturan (hasilnya tidak benar atau tidak pernah selesai).
 Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam kasus
terburuk memiliki kompleksitas O(n2).
 Secara umum bersifat tidak stable, yaitu mengubah urutan input dalam hasil
akhirnya (dalam hal inputnya bernilai sama).
 Pada penerapan secara rekursif (memanggil dirinya sendiri) bila terjadi
kasus terburuk dapat menghabiskan stack dan memacetkan program.

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:

Proses pertama, jarak=(N/2)+1=(8/2)+1=5

 Proses kedua, jarak=(N/4)+1=(8/4)+1=3


Proses ketiga, jarak=(N/8)=(8/4)=1

Berikut merupakan program Shell Sort dalam Bahasa pemograman C++ :


Tampilan setelah program diRun :
Kelebihan 
1. Metode pertukaran pada saat pertama kali ditukar langsung membandingkan
semua data yang sudah di tentukan secara bersamaan.
2. Waktu pengurutan lebih cepat.
3. Algoritmanya lebih sederhana dibandingkan merge sort, heap sort, dan quick
sort.
Kekurangan
1. Pembagian masalah lebih rumit.

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.

Berikut merupakan program Selection Sort dengan menggunakan Bahasa


pemograman C++ :
Tampilan setelah program diRun :

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

  Sederhana dalam penerapannya.


  Mangkus dalam data yang kecil.
  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 Inserion 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.

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.

Algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut


menjelaskan langkah kerja dari Merge sort.

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

Angka Sebelum Diurutkan : 6 3 5 1 8 2 4 7


1. Pertama kali larik tersebut dibagi menjadi dua bagian, {6, 3, 5, 1} dan {8, 2,
4, 7}
2. Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {6, 3}, {5,
1}, {8, 2}, dan  {4, 7}
3. Ketiga larik kemudian diurutkan secara terpisah sehingga menjadi {6}, {3},
{5}, {1}, {8}, {2}, {4}, dan {7}
4. Sebuah larik baru dibentuk yang sebagai penggabungan dari setiap dua larik
dan diurutkan, sehingga masing-masing larik memilik nilai {3, 6}, {1, 5},
{2, 8}, dan {4, 7}
5. Bentuk larik baru lagi yang merupakan penggabungan dari setiap dua larik
dan diurutkan, sehingga masing-masing lari memilik nilai {1, 3, 5, 6} dan
{2, 4, 7, 8}
6. Langkah berikutnya adalah penggabungan dari masing-masing larik ke
dalam larik baru yang dibuat sebelumnya, sehingga memiliki nilai {1, 2, 4,
5, 6, 7, 8}.

Berikut merupakan Program Merge Sort dengan menggunakan Bahasa


pemograman C++ :
Tampilan program setelah diRun :

Kelebihan

- Lebih efesien dari heap sort jika jumlah data banyak.

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 :

Dan hasil heap treenya adalah sebagai berikut :   


Berikut merupakan program Heap Sort dengan menggunakan Bahasa Pemograma
C++ :
Tampilan program setelah diRun :
v   Kelebihan Heap Sort
·         Algoritma Heap Sort banyak digunakan karena efisiensi waktunya.
·         Penggunaan memori yang sedikit.

v   Kekurangan Heap Sort


·         Heap Sort membutuhkan banyak ruang memori untuk proses pengurutan.
·         Algoritmanya yang memilki kompleksitas yang besar.

PERBANDINGAN WAKTU EKSEKUSI :

a. Bubble sort : 32,251


b. Quick sort : 7,673
c. Shell sort : 27,38
d. Selection sort : 23,453
e. Insertion sort : 20,326
f. Merge sort : 9,534
g. Heap sort : 8,299

Kesimpulannya : Metode pengurutan paling efisien adalah Quick Sort, Merge


Sort & Heap Sort. Algoritma bubble sort membutuhkan waktu komputasi yang
paling lama. Sedangkan algoritma quick sort dan merge sort yang paling cepat.
Walaupun insertion sort dan selection sort memiliki kompleksitas algoritma yang
sama dengan bubble sort(o(n 2 )), tetapi waktu yang dihasilkan lebih cepat. 

Anda mungkin juga menyukai