Mergesort Dan Recurrence

Embed Size (px)

Text of Mergesort Dan Recurrence

Algoritma dan Struktur Data Ariyani Armin H12111294 2012 Algoritma dan Struktur Data Ariyani Armin / H12111294 1/1/2012 RINGKASAN MATERI MERGESHORT : ALGORITMA Mergesortmerupakansalahsatualgoritmayangdigunakanuntukmemecahkanmasalah pengurutan/sorting.Mergesortmenggunakantekniktingkatlanjutdalammelakukansortingyakni teknikmembagisuatuderetelemenyangakandilakukansortingkemudianmasing-masingbagian dilakukansortingsecaraterpisahdalammekanismerekursif.Setelahtiap-tiapbagiandilakukasorting makaakandilakukanpenyatuankembali/mergesehinggamenghasilkansuatuderetelemenyang terurut. Teknik sorting yang diterapkan oleh algoritma merge sort biasa disebut divide and conquer. METODE UNTUK DESAIN ALGORITMA : -Divide : Jika ukuran data input sangat besar untuk dieksekusi secara langsung, bagi masalah menjadi dua atau lebih submasalah. Jika S setidaknya terdapat dua elemen (tidak ada yang perlu dilakukan jika S nol atau satu elemen), hapus semua elemen dari S dan tempatkan mereka kedalam dua bagian urutan bilangan,

, masing-masing berisi sekitar setengah dari elemen S. (misalkan

berisi unsur pertama daridan

berisi unsur-unsur yang tersisa. -Conquer : divide dan conquer rekursif untuk memecahkan submasalah. Mengurutkan urutan

menggunakan MergeSort. -Combine : Ambil solusi untuk submasalah dan gabungkan solusi menjadi solusi untuk masalah sebenarnya. Mengembalikan elemen yang telah terurut ke S dengan menggabungkan urutan

menjadi satu urutan yang telah terurut. Contoh : Diberikan Barisan: 91885236447910194 LANGKAH 1: 918852447910194 LANGKAH 2: 447910194 91885236 LANGKAH 3: 447910194 91885236 KETERANGAN: : Divide (Membagi Bilangan) : Proses Divide : Proses Conquer : Proses Combine LANGKAH 4: 447910194 5236 9188 LANGKAH 5: 447910194 5236 88

91 LANGKAH 6: 447910194 5236 91

LANGKAH 7 : 447910194 5236 9188

88 LANGKAH 8 : 447910194 5236 8891

LANGKAH 9 : 447910194 8891

5236 LANGKAH 10 : 447910194 8891

LANGKAH 11 : 447910194 8891

36 52 52 36 LANGKAH 12 : 447910194 8891

LANGKAH 13: 447910194 8891

5236 3652 LANGKAH 14: 447910194 88913652

LANGKAH 15: 447910194 36528891

LANGKAH 16: 36528891447910194

LANGKAH 17: 36528891

447910194 LANGKAH 18: 36528891

LANGKAH 19: 36528891447994101

447994101 LANGKAH 20: 36445279889194101

Jadi, hasil akhirnya adalah 36445279889194101 IMPLEMENTASI MERGESORT Dalamimplementasinya,algoritmamergesortmemerlukantigaarrayyangdigunakansebagai penampunganelemenarraysementara.Duaarraydigunakanuntukmenampungelemenarrayyag dibagidansatuarraylagidigunakansebagaiwadahtempatarrayoutputyagtelahterurut. Dengan menggunakan array lebih dari satu membuat algoritma ini memerlukan banyak resource system. Contoh Implementasi: mergesort.java 01 public class MergeSort { 02 static int[]data; 03 public static void main(String[] args) { 04 int []array={2,4,0,8,3,4,5}; 05 data=array; 06 tampil(data); 07 int[]wadah=new int[array.length]; 08 recursiveMergeSort(wadah, 0, data.length-1); 09 tampil(data); 10 } 11

12 private static void recursiveMergeSort(int[]arr,int kiri,int kanan){ 13 if(kiri 0 makaT(n) = (nlogba) dhi, f(n) secara polinomial lebih kecil dari nlogba dengan faktor n, seginhha nlogba mendominasi. Contoh: ()( ) a=9, b=3, f(n)=n

Pada kasus diatas merupakan contoh kasus 1 karena ()(

) sehingga ()(

) 2.Kasus 2 ()( ) () jikaf(n) = (nlogba) makaT(n) = (nlogbalog n) dhi, cost setiap langkah adalahnlogba sehingga, padahal ada sebanyak log n langkah, jadiT(n) = (nlogbalog n) Contoh:()( ) dimana a=1, b=3/2, f(n)=1

Pada kasus diatas merupakan contoh kasus 2 karena ()

sehingga () 3.Kasus 3 ()( ) () jikaf(n) = (nlogb(a+)), > 0dan a f(n/b) c f(n)untuk c < 1makaT(n) = (f(n)) dhi, f(n) > nlogba dgn faktor polinomial sehingga suku dominan adalahf(n) + f(n/b) + f(n/b2) O(f(n))Contoh: ()( ) a=3, b=4, f(n)=n lg n

(

) (

)(

)() Pada kasus diatas merupakan contoh kasus 3 karena f(n) mendominasi.