You are on page 1of 17

Algoritma Merge Sort dan

Algoritma Radix Sort

Oleh :
Moh. Rochman Wahid Maulana ( 16070895014 )

Program Studi S2 Pendidikan Teknologi dan Kejuruan

Program Pascasarjana Universitas Negeri Surabaya

2016

0
1
KATA PENGANTAR

Bismillahirrohmanirohim Puji syukur kami panjatkan kepada Allah
SWT, karena kuasa-Nya kami dapat menyelesaikan tepat pada
waktunya. Sholawat dan salam semoga tetap tercurah limpahkan kepada
junjungan Nabi Muhammad SAW, kepada keluarganya, sahabatnya,
tabi’in dan tabi’atnya dan semoga sampai kepada kita selaku umatnya,
semoga di akhir zaman kita dapat mendapat syafaat darinya. Amin.
Dalam makalah ini kami akan mencoba membahas tentang
pengurutan dan pencarian yaitu metode pengurutan MERGE SORT dan
RADIX SORT serta contoh-contoh programnya.
Kami sadar dalam penyusunan makalah ini sudah pasti jauh dari
kesempurnaan, maka dari itu kritik dan saran yang membangun sangat
kami tunggu. Akhir kata semoga makalah ini bisa bermanfaat bagi
semua, khususnya bagi kami selaku penulis dan penyusun, dan umunnya
bagi semua pembaca. Terima kasih.

Bangkalan, 20 Desember 2016

Penulis

2
DAFTAR ISI

Kata pengantar ............................................................................................................................. 1
Daftar Isi ...................................................................................................................................... 2
BAB I PENDAHULUAN
1.1 Pendahuluan .......................................................................................................................... 3
1.2 Rumusan Masalah ................................................................................................................. 3
1.3 Tujuan .................................................................................................................................... 4
BAB II PEMBAHASAN
2.1 Pengertian Merge sort ............................................................................................................ 5
2.2 Pengertian Radix sort ............................................................................................................ 8
2.3 Contoh program sederhana Merge sort ................................................................................ 11
2.4 Contoh program sederhana Radix sort ................................................................................ 12
BAB III PENUTUP
3.1 Kesimpulan .......................................................................................................................... 14
Daftar pustaka ............................................................................................................................ 15

3
BAB I
PENDAHULUAN

1.1 Latar Belakang
Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk
menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari
awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah,
ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan
dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria. Algoritma sering
mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan
perbandingan) sampai tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang
mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah,
terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari
secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan.
Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang
dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang
dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang
rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya
mempunyai kompleksitas yang tinggi.
Sedangkan sorting adalah sebuah proses merangkai benda dalam urutan tertentu dan/atau
dalam himpunan yang berbeda, dan oleh karena itu dia memiliki dua arti umum yang berbeda:
1. Pengurutan: merangkai benda yang sejenis, sekelas, dll, dalam urutan yang teratur.
2. Kategorisasi: pengelompokan dan pemberian label kepada benda dengan sifat yang
serupa.
Algoritma sorting terdiri dari beberapa algoritma seperti Bubble sort, Quick sort,
Selection Sort, Insertion Sort, dan Merge Sort yang dimana setiap jenis sorting ini memiliki
perbedaan satu sama lainnya.
Dalam makalah ini penulis hanya membahas algoritma tentang Merge Sort, Radix Sort.

1.2 Rumusan Masalah
Dari latar belakang diatas adapun permasalahan kami adalah sebagai berikut :
1.2.1 Apa pengertian algoritma sorting Merge Sort dan Radix Sort?
1.2.2. Apa saja bagian-bagian algoritma sorting Merge Sort dan Radix Sort?
1.2.3. Apa fungsi dari bagian-bagian algoritma sorting Merge Sort dan Radix Sort tersebut ?

4
1.3 Tujuan
Dari rumusan masalah diatas, adapun tujuan kami adalah sebagai berikut:

1.3.1. Untuk mengetahui pengertian algoritma sorting Merge Sort dan Radix Sort?
1.3.2. Untuk mengetahui bagian-bagian algoritma sorting Merge Sort dan Radix Sort?
1.3.3. Untuk mengetahui fungsi dari bagian-bagian algoritma sorting Merge Sort dan Radix
tersebut ?

5
BAB II
PEMBAHASAN

2.1 Merge Sort
Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort
termasuk paradigma algoritma divide and conquer (kurang lebih berarti: bagi dan atasi).
Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelum kemudian
dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai
berikut,
1. Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan
daripada sebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan
langkah yangl ebih sedikit daripada membentuk sebuah list terurut dari dua buah
list tak terurut. Contoh:hanya diperlukan satu kali traversal untuk masing-masing
list jika keduanya sudahterurut.
Algoritma Merge Sort sederhananya, dapat ditulis berikut:
1. Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih
panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan
ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.
Ada dua macamMerger Sort secara Ascending dan secara Descanding

Untuk mengurutkan beberapa elemen, Merge Sort mengggunakan teknik Divide and
Conquer yang tahapan-tahapannya sbb :) :

Tahapan-tahapannya:

1. Tahap Divide

Array A dibagi menjadi 2 bagian array , yaitu A1 dan A2. Kalau pembagiannya masih
terlalu besar maka masing-masing bagian tadi dibagi menjadi dua bagian lainnya menjadi
lebih kecil.

2. Tahap Recursion

Masing-masing bagian diurutkan dengan cara rekursif.

3. Tahap Conquer

Setelah diurutkan, masing-masing bagian array digabungkan dan diurutkan sehingga
menjadi satu array (Array A) yang utuh dan telah disusun secara urut

6
Misalkan kita mau mengurutkan beberapa angka yaitu 38,27,43,3,9,82 dan 10. Maka
untuk mengurutkan menggunakan merge-sort langkah-langkahnya seperti gambar
dibawah in

Berikut adalah contoh Merge Sort Descanding

Lakukan tahap Divide
Langkah 1 :
Langkah ini membuat dua tabel yaitu tabel 1 = 7 8 5 dan tabel 2 = 4 6 9

Setelah lakukan langkah 1
Langkah 2 :

Langkah ini menggabungkan nilai 7 dan 8 serta 4 dan 6 kemudian yang terpisah 5 dan 9

Langkah 3 :

Langkah ini di pisahkan masing-masing angka
Langka 4 :

7
Tahap ini adalah tahap Conquer dimana tahap ini membandingkan angka jika angka yang
lebih besar maka angka yang lebih besar akan terpilih masuk ke proses berikutnya.
Diatas yang sudah bertukar posisi adalah tabel 1 = 8 dan 7 dan di tabel 2 = 6 dan 4
Langkah 5 :

Langkah ini bandingkan juga angka pada tabel 1 = 8 dibandingkan dengan 5 dan 7
dibandingkan dengan 5 begitu juga dengan tabel 2. Maka akan muncul nilai di tabel 1 = 8
7 5 dan tabel 2= 9 6 4
Langkah 6 :

Pada tahap ini membandingkan kedua tabel yang yaitu tabel 1 dan tabel 2. Dengan cara
yang seperti di langkah 5, yaitu dengan hasil nilai 9 8 7 6 5 4. Maka dengan demikian
proses Merge Sort telah terselesaikan.

Berikut ini adalah tiga proses di dalam menggunakan algoritma Merge Sort :
8
Divide : Bagi array A[l..r] dengan jumlah elemen dan menjadi dua subarray dengan
jumlah elemen masingmasing subarray sebanyak n/2.
Conqueror : Urutkan masing-masing subarray secara rekursif menggunakan prosedur
merge sort
Combine : Satukan subarray untuk menghasilkan elemen array A[l..r] yang terurut.
Berikut ini adalah algoritma untuk Merge Sort array A[l..r]:
Merge-Sort (A,l,r)
1. if l < r
2. then q := [(l+r) /2]
3. Merge-Sort(A,l,q)
4. Merge-Sort(A,q+1,r)
5. Merge(A,p,q,r)

Sedangkan algoritma untuk prosedure Merge adalah sebagai berikut :
MERGE ( A, l, q, r)
1. n1 ← q − l + 1
2. n2 ← r − q
3. create arrays L[1 . . n 1 + 1] and R[1 . . n 2 + 1]
4. for i ← 1 to n 1
5. do L[i] ← A[ l + i − 1]
6. for j ← 1 to n 2
7. do R[ j ] ← A[q + j ]
8. L[n 1 + 1] ← ∞
9. R[n 2 + 1] ← ∞
10. i ← 1
11. j ← 1
12. for k ← l to r
13. do if L[i] ≤ R[ j ]
14. then A[k] ← L[i]
15. i ←i +1
16. else A[k] ← R[ j ]
17. j ← j +1

Kelebihan dan kekurangan Merge Sort :
1) Membutuhkan setidaknya ruang atau memori dua kali lebih besar karena dilakukan
secara rekursif dan memakai dua tabel.
2) Metodenya simple dan lebih cepat dibandingkan ‘Bubble Sort’ tidak efisien dan
menyita lebih banyak waktu prosessor dibandingkan dengan metode sorting yang
lain.

2.2 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 bagian2 dari
kategori tersebut akan digabungkan kembali.

9
Catatan : data yang diurutkan pertama kali yaitu berupa input nilai2 yang dimasukkan
pertama kali berdasarkan radix pertamanya, lalu diteruskan atau diurutkan lagi
berdasarkan radix keduanya, dst…

Penjelasan Algoritma Radix Sort :
Pada system decimal radix adalah digit dalam angka decimal. Missal : angka 354
mempunyai 3 digit yaitu 3, 5 dan 4
Contoh algoritma radix sort untuk mengurutkan bilangan bulat positif, dengan jumlah
digit maksimal 3 :

313 354 123 321 543 756 834 675

Pertama kita harus membagi-bagi data sesuai dengan urutan terkanan
Lihat terlebih dahulu digit yang paling besar untuk menentukan kategori berapa baris data
yang akan kita urutkan, dan dicontoh ini nilai digit paling besar yaitu angka 8, sehingga
kategori sebanyak 8 baris dan diawali dengan angka 0.

Supaya lebih jelas lihat table dibawah :

10
Kelebihan dan Kekurangan Radix Sort :
1) Dari proses2 yang sudah kita kerjakan menggunakan Radix Sort, sangat jelas Radix sort
termasuk algoritma pengurutan tanpa pembanding yang bersifat melihat digit2 angka
sebagai pengontrolnya. Sebenarnya Radix Sort dapat diimplementasikan dalam
pengurutan bilangan Decimal dan bilangan bit. Namun dalam penggunaannya Radix Sort
bisa dimodifikasi untuk mengurutkan data2 negatif & pecahan.
2) Kelebihan : merupakan algoritma pengurutan yang cepat, mudah dan sangat efektif
3) Kekurangan : pengguaannya terbatas pada kasus2 tertentu dan memerlukan memori
tambahan yang besar dalam prosesnya mengkategorikan sebuah data.

Implementasi dalam bilangan Bit

Radix Sort yang sangat sederhana untuk bit
yaitu seperti pseudo-code di bawah ini :
for i = 0 to source_n do
dest[source[i]].append(
source[i])
endfor
di mana :
source adalah List of bytes
source_n adalah jumlah bytes yang
diurutkan
dest[256] adalah 256 list of bytes.
11
2.3 Contoh Program dari Merge Sort

Dan ini contoh program yang sudah dijalankan menggunakan Merge Sort

12
2.4 Contoh Program dari Radix Sort
import java.io.BufferedInputStream;
import java.io.*;

/**
*
* @author TOSHIBA
*/
public class radix {
static void radixsort (int a[], int d){
int bmat[][], c[], e=1;
int i, j, k, m, digit, row, col;

bmat = new int [a.length][10];
c = new int [10];

for (m=1; m<=d; m++){
for (i=0; i<10; i++){
c[i]=-1;
}
for (i=0; i<a.length; i++){
digit = (a[i]/e)%10;
c[digit]++;
row = c[digit];
col = digit;
bmat[row][col]=a[i];
}
k=-1;
for (i=0; i<10; i++){
if(c[i]!=-1){
for (j=0; j<=c[i]; j++){
k++;
a[k]=bmat[j][i];
}
13
}
}
e=e*10;
}
}
public static void main(String[] args) throws Exception{
BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“Berapa banyak bilangan untuk di urutkan ?”);
int n =Integer.parseInt(inp.readLine());

int a[]=new int[n];
for (int i=0; i<n; i++){

System.out.println(“Inputkan Nilai “+(i+1)+” : “);
a[i]=Integer.parseInt(inp.readLine());
}

radixsort (a,3);
System.out.println(“\n”+”Array Terurut: “);

for (int i=0; i<n; i++){
System.out.print(a[i]+” “);
}
System.out.println();
}

Hasil Radix Sort :

14
BAB III
KESIMPULAN

3.1 Kesimpulan
Dari masing2 pengurutan pasti mempunyai kelebihan dan kekurangan dari merge
sort membutuh 2 tabel untuk mengurutkan dengan perbandingan dari yang terbesar dan
terkecil sedangkan radix sort merupakan algoritma pengurutan yang cepat, mudah dan
sangat efektif dan algoritma pengurutan tanpa pembanding yang bersifat melihat digit2
angka sebagai pengontrolnya.

15
Daftar Pustaka

https://id.wikipedia.org/wiki/Urut_gabung. Diakses tanggal 29 Oktober 2016 pukul 10.00
WIB.

https://www.youtube.com/watch?v=ys-8B8FviLo&t=12s. Diakses tanggal 29 Oktober
2016 pukul 11.00 WIB.

https://rudiinformatics011.wordpress.com/category/uncategorized. Diakses tanggal 29
Oktober 2016 pukul 11.30 WIB.

Arief Rahman. Makalah. 2013. Analisis Algoritma Radix Sort. Program Studi Teknik
Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung

Dean Fathony Alfatwa1, Eriek Rahman Syah P2, Fahris Mumtaza Ahsan3. Makalah.
2013. Implementasi Algoritma Radix Sort dalam Berbagai Kasus Bilangan Dibandingkan
Algoritma Pengurutan yang lain. Program Studi Teknik Informatika Sekolah Teknik
Elektro dan Informatika Institut Teknologi Bandung.

16