Algoritma
pengurutan data Merge sort dilakukan dengan menggunakan cara divideandconquer
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 mergesort merupakan
metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.
Dengan
hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola
divide-and-conquer. Berikut menjelaskan langkah kerja dari Mergesort.
1. Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer
Conquer setiap bagian dengan memanggil prosedur mergesortsecararekursif
Conquer setiap bagian dengan memanggil prosedur mergesortsecararekursif
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkanrangkaian data berurutan
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkanrangkaian 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.
Prinsip dari metode
penggabungan sebagai berikut :
·
Mula-mula diberikan
kumpulan data yang belum dalam keadaan urut.
·
Kemudian dipisah menjadi dua
kumpulan data.
·
Dari dua kumpulan data dipisah
kembali hingga menjadi satu-satu elemen terpisah
·
Setelah kumpulan data tersebut terpisah harus dijadikan satu table
kembali sehingga dalam keadaan urut.
Contoh penerapan atas sebuah larik/array
sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5, 2} adalah sebagai
berikut:
1. pertama kali larik tersebut dibagi menjadi
dua bagian, {3, 9, 4} dan {1, 5, 2}
2. Kedua larik kemudian diurutkan secara
terpisah sehingga menjadi {3, 4, 9} dan {1, 2, 5}
3. Sebuah larik baru dibentuk yang sebagai
penggabungan dari kedua larik tersebut {1}, sementara nilai-nilai dalam masing larik {3, 4, 9} dan {2, 5} (nilai 1 dalam elemen larik ke
dua telah dipindahkan ke larik baru)
4. langkah berikutnya adalah penggabungan
dari masing-masing larik ke dalam larik baru yang dibuat sebelumnya
5. {1, 2} ↔{3, 4, 9} dan {5}
6. {1, 2, 3} ↔ {4, 9} dan {5}
7. 1, 2, 3, 4}↔{9} dan {5}
8. {1, 2, 3, 4, 5}↔{9} dan {null}
9. {1, 2, 3, 4, 5, 9}↔{null}dan {null}
Contoh lainnya :


0 komentar:
Posting Komentar