52

Sorting merge-sort

Embed Size (px)

Citation preview

Page 1: Sorting   merge-sort

Sorting Algorithms

1. Selection2. Bubble3. Insertion4. Merge5. Quick6. Shell

Page 2: Sorting   merge-sort

Divide and Conquer

• Metode Divide and Conquer, setiap kali memecah persoalan menjadisetengahnya, namun menggunakanhasil dari kedua bagian tersebut:– cut the problem in half until the problem is trivial���� tidak ber-problem lagi

– solve for both halves– combine the solutions

Page 3: Sorting   merge-sort

Mergesort

• A divide-and-conquer algorithm:Membagi unsorted array menjadi 2 bagian hinggamenghasilkan sub-arrays yang hanya berisi satuelemen

• Merge together solusi dari sub-problem HOW?– Bandingkan elemen pertama dari 2 sub-array– Ambil elemen yang terkecil dan letakkan padaarray hasil

– Teruskan proses pembandingan dan pengambilan, sampai seluruh elemen sub-array dipindahkan kearray hasil

37 23 6 89 15 12 2 19

Page 4: Sorting   merge-sort

Algorithm

Mergesort(Passed an array)Jika ukuran array > 1

Bagi array menjadi duaPanggil fungsi Mergesort untuk bagian pertamaPanggil fungsi Mergesort untuk bagian keduaMerge dua bagian tersebut.

Merge(Passed two arrays)Bandingkan elemen pertama dari kedua arrayPilih yang lebih kecil dan tempatkan pada array hasil, update posisi elemen pertama pd array yang telah diambil elemennya(Jika salah satu array input telah kosong,maka letakkan elemen yang tersisa dariarray lainnya ke array hasil)

Page 5: Sorting   merge-sort

More TRUTH in CS

• We don’t really pass in two arrays!• Sebenarnya kita hanya melewatkan satu aray, dengan

sebuah variabel indikator yang akan menandai di manasatu set data dimulai dan diakhiri, berikutnya di mana set data lainnya dimulai dan diakhiri.

s1 f1 s2 f2

Page 6: Sorting   merge-sort

Algorithm

Mergesort(Passed an array)if array size > 1

Divide array in halfCall Mergesort on first half.Call Mergesort on second half.Merge two halves.

Merge(Passed two arrays)Compare leading element in each arraySelect lower and place in new array.(If one input array is empty then placeremainder of other array in output array)

Page 7: Sorting   merge-sort

674523 14 6 3398 42

Page 8: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

Page 9: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

Page 10: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Page 11: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Merge

Page 12: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23

Merge

Page 13: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23 98

Merge

Page 14: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

23 98

Page 15: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98

Page 16: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

14

Merge

23 98

Page 17: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

45

Merge

23 98 14

Page 18: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

98 451423

Page 19: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

98 14

14

23 45

Page 20: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 14

14 23

98 45

Page 21: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98 4514

14 23 45

Page 22: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98 4514

14 23 45 98

Page 23: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

23 98 4514

14 23 45 98

Page 24: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

23 98 4514

14 23 45 98

Page 25: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

Merge

23 98 4514

14 23 45 98

Page 26: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

6

Merge

23 98 4514

14 23 45 98

Page 27: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

67

Merge

23 98 4514 6

14 23 45 98

Page 28: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

23 98 4514 676

14 23 45 98

Page 29: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676

14 23 45 98

Page 30: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

3323 98 4514 676

14 23 45 98

Page 31: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

4223 98 4514 676 33

14 23 45 98

Page 32: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98

Page 33: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 6 4233

14 23 45 98 6

67

Page 34: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 6 33

14 23 45 98 6 33

67 42

Page 35: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 6 4233

14 23 45 98 6 33 42

67

Page 36: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98 6 33 42 67

Page 37: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

23 45 98 33 42 6714 6

Page 38: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

23 45 98 6 42 67

6

14 33

Page 39: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 45 98 6 42 67

6 14

23 33

Page 40: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 98 6 42 67

6 14 23

45 33

Page 41: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 98 6 33 67

6 14 23 33

45 42

Page 42: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 98 6 33 42

6 14 23 33 42

45 67

Page 43: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 6 33 42

6 14 23 33 42 45

98 67

Page 44: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67

Page 45: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Merge

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Page 46: Sorting   merge-sort

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Page 47: Sorting   merge-sort

674523 14 6 3398 42

6 14 23 33 42 45 67 98

Page 48: Sorting   merge-sort

Algoritma Merge Sort

void MergeSortRekursif(l, r)1. jika (l < r) maka kerjakan baris 2-5 2. med = (l+r) / 2 ;3. MergeSortRekursif(l,med);4. MergeSortRekursif(med+1,r);5. Merge(l,med,r);

Page 49: Sorting   merge-sort

Fungsi Mergevoid Merge(left, median, right)1. kiri1 ← left 2. kanan1 ← median3. kiri2 ← median+14. kanan2 ← right5. i ← left;6. selama (kiri1<=kanan1) dan (kiri2<=kanan2) kerjakan 7-137. jika (Data[kiri1] <= Data[kiri2]) kerjakan 8-98. hasil[i] = Data[kiri1];9. kiri1++10. jika tidak kerjakan baris 11-1211. hasil[i] = Data[kiri2];12. kiri2++13. i++

Page 50: Sorting   merge-sort

14. selama (kiri1<=kanan1) kerjakan baris 15-1715. hasil[i] = Data[kiri1]16. kiri1++17. i++

18. selama (kiri2<=kanan2) kerjakan baris 19-2119. hasil[i] = Data[kiri2]20. i++21. kiri2++

22.j ← left23.selama (j <=right) kerjakan baris 24-2524. Data[j] = hasil[j]25. j++

Page 51: Sorting   merge-sort
Page 52: Sorting   merge-sort

Summary

• Divide the unsorted collection into two

• Until the sub-arrays only contain one element

• Then merge the sub-problem solutionstogether