Anda di halaman 1dari 6

Algoritma Sorting

A. Insertion Sort (Metode penyisipan)

Berdasarkan makalah ANALISIS ALGORITMA INSERTION SORT,


MERGE SORT DAN IMPLEMENTASINYA DALAM BAHASA
PEMROGRAMAN C++ yang dikarang oleh mahasiswa teknik elektro
universitas SRIWIJAYA, Palembang, Salah satu algoritma sorting yang paling
sederhana adalah insertion sort. Insertion Sort disebut-sebut sebagai metode
pertengahan. Artinya, metode ini memiliki kecepatan rata-rata antara metode
primitif (bubble dan selection) dan modern (merge dan quick).

Berikut adalah pseudocode insertion sort:

InsertionSort (Array, jumlah){


for i = 1 menuju bilangan ke – n{
Kunci = Array[i] //menetapkan elemen array indeks i ke kunci
j = i – 1 //variabel j untuk pembanding
while (j >= 0) dan (Array[j] > kunci){
Array[j+1] = Array[j] //pindahkan elemen tsb ke 1 posisi berikut
j = j-1 //ini untuk ke elemen yang ke belakang
} // Lanjut sampai Array[j] < kunci
Array[j+1] = kunci //tetapkan temp kembali ke array
}
}
Kelebihan
1. Sederhana dalam penerapannya.
2. Mangkus dalam data yang kecil.
3. Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih
cepat dibandingkan dengan Quicksort.
4. Lebih mangkus dibanding Bubble Sort dan Selection Sort.
5. Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu
algoritma pengurutan tercepat pada jumlah elemen yang sedikit.
6. Stabil.

Kekurangan
1. Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk
elemen larik.
2. Untuk larik yang jumlahnya besar ini tidak praktis.
3. Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai
dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
4. Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok
dalam pengurutan elemen dalam jumlah besar.

B. Selection Sort
Metode pengurutan pilih (Selection Sort) adalah metode dimana elemen-
elemen diperbandingkan satu-satu.

Pesudocode:

SelectionSort(Array, n){
for i = 0 menuju n-1 {
min = i //menetapkan indeks i sebagai minimum
//bandingkan elemen pada indeks j dengan indeks min
for j = i+1 ke n {
if Array[j] < Array[min] //jika elemen j < min
min = j //update nilai min = j
j = j+1 //ulangi sampai nilai j = n
}
temp = Array[i] //tukarkan 2 elemen:
Array[i] = Array[min] //Array[i] = Array[min]
Array[min] = temp
} //ulangi sampai nilai i = n-1
}

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.
C. Bubble Sort
Metode gelembung ( bubble sort) = metode penukaran ( exchange sort ) adalah
metode mengurutkan data dengan cara membandingkan masing-masing elemen,
kemudian melakukan penukaran bila perlu. Metode ini adalah metode yang
paling tidak efisien.

Cara sorting dengan metode ini adalah sebagai berikut:


1. Bubbling up the largest
 Cek sekumpulan elemen
- Pindahkan posisi awal ke akhir.
- Gelembungkan nilai terbesar ke bagian akhir menggunakan
metode pembanding sepasang dan penukaran
 Tranver elemen
- Pindahkan dari depan ke belakang nilai
- Gelembungkan nilai terbesar ke bagian akhir menggunakan
metode pembanding sepasang dan penukaran
Inilah pseudocode:

numElements = number of structures to be sorted


for ( inx = 0 ; inx < numElements - 1 ; ++inx )
for ( jnx = numElements - 1 ; jnx != inx ; --jnx )
if ( element( jnx ) < element( jnx - 1 ) )
swap( element( jnx ), element( jnx - 1 ) )
Kelebihan Bubble Sort :

1. Proses penghitungan Bubble sort merupakan metode yang paling sederhana


2. Algoritma Bubble Sort mudah dipahami
3. Langkah atau tahapan dalam pengurutan data sangat sederhana.

Kekurangan Bubbe Sort :

1. Proses penghitungan Bubble Sort menggunakan metode pengurutan termasuk


paling tidak efisien walaupun dianggap sederhana. Karena proses pengurutan
data dilakukan dengan tahapana satu - satu, mulai dari data paling awal sebelah
kiri, sampai data terakhir
2. Ketika data yang kita punya banyak atau dalam jumlah yang besar, maka
proses penghitungan akan semakin lama dan lambat. Karena proses
pengurutan data secara tunggal (satu - satu).
3. Jumlah pengulangan akan tetap sama sampai ke data yang terakhir, walaupun
sebagian data yang ada telah terurut.

D. Merge Sort
Merge sort adalah metode penggabungan dua array ke dalam sebuah array yang
baru. Disebut juga dengan Devide and Conquer method. Ditemukan oleh John
von Neumann pada tahun 1945.
Pseudocode:

MergeSort(arr[], l, r)
If r > l
1. Find the middle point to divide the array into two halves:
middle m = (l+r)/2
2. Call mergeSort for first half:
Call mergeSort(arr, l, m)
3. Call mergeSort for second half:
Call mergeSort(arr, m+1, r)
4. Merge the two halves sorted in step 2 and 3:
Call merge(arr, l, m, r)

Kelebihan Merge Sort

- Dibanding dengan algoritma lain, merge sort ini termasuk 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.

Kekurangan Merge Sort

- Kekurangan Merge Sort yaitu terlalu banyak menggunakan ruang pada memori.
- Merge Sort membutuhkan lebih banyak ruang daripada jenis sorting lainnya.

Anda mungkin juga menyukai