2. Nama Kelompok
1. Chusnul Khotimah (13030214002)
2. Hidayatul Ula (13030214006)
3. Novalia Rachmaniar N S (13030214021)
3. DEVIDE
(Memecah)
CONQUER
(Menyelesaikan)
Membagi array menjadi
dua secara terus menerus
hingga hanya tersisa satu
elemen pada sub-array
yang terbentuk.
Kemudian elemen-
elemen tersebut di
urutkan lalu di gabung
secara terus menerus
hingga terbentuk array
dengan ukuran yang
sama dengan array asal
Merge
Sort
4. ALGORITMA
1. Jika bernilai 0 atau 1,
maka array sudah
terurut. Sebaliknya:
3. Urutkan setiap sub-
array. Jika sub-array
tidak cukup kecil,
lakukan rekursif langkah
2 terhadap sub-array.
4. Menggabungkan
dua sub-array
kembali menjadi satu
array yang terurut
2. Bagi array yang tidak terurut
menjadi dua subarray, dimana
bagian pertama merupakan
setengah (jika data genap) atau
setengah minus satu (jika data
ganjil) dari seluruh data.
6. Merge sort memiliki kasus terburuk dan
kasus rata-rata. Kasus terburuk adalah saat
tiap 2 lemen dibandingkan selalu dilakukan
pertukaran. Bila waktu yang diperlukan
untuk melakukan merge sort adalah T(n)
maka untuk saat rekursif waktu yang
dihabiskan adalah T(n) = 2T(n/2) + n. T (n/2)
adalah waktu yang diperlukan untuk merge
setengah dari ukuran list, dan ditambah n
sebagai langkah dari penggabungan list.
Kompleksitas waktu terburuk dan rata-rata
dari merge sort adalah O(n log n)
Kompleksitas Merge Sort
7. Kompleksitas Merge Sort
Merge Sort akan selalu membagi
dua tiap sub-arraynya, sehingga
kompleksitas dari algoritma Merge
Sort berlaku untuk semua kasus
(Worst Case = Best Case = Average
Case).
8. Pseudocode Merge Sort
input : Array
output : Array yang terurut
algoritma :
1. if length(m) _ 1 then
2. return m
3. else
4. tengah = length(m) div 2
5. for x = m to tengah do
6. add x to kiri
7. end for
8. for x = m after tengah do
9. add x to kanan
10. end for
11. while length(kiri) > 0 and length(kanan) > 0 do
12. if first(kiri) _ first(kanan) then
13. Append first(kiri) to hasil
14. kiri = rest(kiri)
15. else
16. append first(kanan) to hasil
17. kanan = rest(kanan)
18. end if
19. end while
20. if length(kiri) > 0 then
21. append rest(kiri) to hasil
22. end if
23. if length(kanan) > 0 then
24. append rest(kanan) to hasil
25. end if
26.return hasil