P. 1
Merge Sort

Merge Sort

|Views: 3|Likes:
Dipublikasikan oleh Cosmas Eko Suharyanto

More info:

Published by: Cosmas Eko Suharyanto on May 28, 2013
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/23/2015

pdf

text

original

Struktur Data dan Algoritma

Metode Pengurutan Merge Sort
Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

proses pembagian data dilakukan terus selama S.C) S ← merge(S1. Secara umum.S2) ← partisi(S.size()>1 (S1. Ilustrasi dari algoritma merge sort adalah sebagai berikut: Algoritma mergesort(S. Kompleksitas proses penggabungan ini (merging) adalah O(n).C) mergesort(S2.n/2) mergesort(S1. Proses penggabungan ini dilakukan sampai semua data tergabung dan terurut sesuai urutan yang diiginkan. Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 2 . Pada contoh berikut ini.C) Input: n elemen dari data S dan comparator C Output: data S terurut berdasarkan C if S. Metode ini juga menggunakan konsep devide and conquer yang membagi data S dalam dua kelompok yaitu S1 dan S2 yang tidak beririsan (disjoint). proses penggabungan (merging) dilakukan antara sub-sub bagian dengan memperhatikan urutan data yang diinginkan (ascending/kecil ke besar atau descending/besar ke kecil). Dengan kata lain. Fungsi rekursif adalah sebuah fungsi yang didalam implementasinya memanggil dirinya sendiri. Setelah data tidak dapat dibagi lagi. sama dengan metode Quick Sort.size > 1 (belum tunggal). terminated condition dari proses rekursif mergesort akan berakhir jika data tidak dapat dibagi lagi (data tunggal telah diperoleh). Pemanggilan diri sendiri ini berakhir jika kondisi tertentu terpenuhi (terminated condition is true). Kompleksitas algoritma merge sort adalah O(n log n).S2) Fungsi merge berfungsi untuk menggabungkan hasil pengurutan dari sub bagian S1 dan S2 berdasarkan urutan tertentu (ascending atau descending order).Merge Sort Metode pengurutan merge sort adalah metode pengurutan lanjut. Proses pembagian data dilakukan secara rekursif sampai data tidak dapat dibagi lagi atau dengan kata lain data dalam sub bagian menjadi tunggal. algoritma merge sort dapat diimplementasikan secara rekursif.

first().empty() if S1.elemen() < S2.elemen() S.first()) while not S2.empty() and not S2.remove(S1.insert(S1.insert(S2.empty() S.S2) Input: data S1 dan S2 dengan n/2 elemen per data Output: data terurut dari penggabungan S1 ∪ S2 S ← data kosong while not S1.remove(S2.first()) else S.first()) return S Ilustrasi Algoritma Merge Sort Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 3 .remove(S1.Algoritma dari proses penggabungan adalah: Algoritma merge(S1.insert(S1.insert(S2.remove(S2.empty() S.first()) while not S1.first().

Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 4 .

Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 5 .

Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 6 .

h> #include <stdlib.k.sizeof(int)).++i) printf("%d\t".m<n.4. int n).int c[].23.k).int b[].45.j+=2*k) merge(key+j.10.*w. return 1. for (k=1. void merge(int a[]. if (m!=n){ printf("jumlah arraynya salah ").h> void mergesort(int key[]. for(i=0.j<n-k. for (m=1.k*=2){ for(j=0.key[i]).i<8. j<n.int m. } w = calloc(n. } Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 7 . for(j=0. ++j) key[j]=w[j].int n). assert(w!=NULL). } void mergesort(int key[].w+j.m.m*=2).11. key[8]={12.key+j+k.k. int main(void){ int i. } free(w).17}. int n){ int j.Latihan Urutkan data berikut menggunakan metode merge sort dan tunjukkan langkah per langkah proses pengurutannya. exit(1). mergesort(key. 40 75 12 68 72 9 56 18 60 5 20 65 2 Implementasi Merge Sort dikutip dari buku ”A Book in C” #include <stdio.8).9.k<n.

k=0.int n){ int i=0. else c[k++] =b[j++].int c[].j=0. while (i<m) c[k++] =a[i++]. while (i < m && j < n) if (a[i] < b[j]) c[k++] =a[i++].int m.void merge(int a[].int b[]. while (j<n) c[k++] =b[j++]. } Struktur Data dan Algoritma Author: Taufik Fuadi Abidin dan Irvanizam 8 .

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->