8.6 merge sort

25
1 1 2

Transcript of 8.6 merge sort

Page 1: 8.6 merge sort

1

1�������� � � �� � � � � ������������

������� �������

�� �������

� � � � ����

� � � ��� �

� � � ��

� � � ���

� � � ����

2�������� � � �� � � � � ������������

�����������������

� ������ � �� ��� � �� �� � ������� � � ��� �� �� �

� ���� � � � �� � �� ����� � � � � �� � � �

� �� � � � � � � � ��� � �� � ��� � � � � ������ � ��

� �� ��� �� ��� ��� �� � ��� � ����� �� ��� ��� ������ � �����

��� � � ���� ��� ��� � � �

� ���� ����� ��� � �� ��

� ��� � �� ��� ����� ���� �

Page 2: 8.6 merge sort

2

3�������� � � �� � � � � ������������

��������

� � ��� ���� � ����� � �� �� ����� � �

� ��� � � � � � ������ �� � � �� � �� � � � � � �� � � � �� � � ���� � �� � � �� � �� � � � � � � ����� � ������ ��

� ����������� ������ �� � �� �� � �� ��� ��� �� ! � ��� � � � ���� �� � ��� � � �� �� � � �� �

� � � � �� ���� �� � � � ���� ���� � � ��� � � � � � �� � � ���

� " ��� �� � � ����� � �� � � ��� � � � � � �� � � � �� � �� � � ����� �� � ���� �� �� � � �� � ��� �� � � � � � � �� � � ���

37 23 6 89 15 12 2 19

4�������� � � �� � � � � ������������

� ������

Mergesort(Passed an array)Jika ukuran array > 1

Bagi array menjadi dua

Panggil fungsi Mergesort untuk bagian pertama

Panggil fungsi Mergesort untuk bagian kedua

Merge dua bagian tersebut.

Merge(Passed two arrays)Bandingkan elemen pertama dari kedua array

Pilih 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 3: 8.6 merge sort

3

5�������� � � �� � � � � ������������

674523 14 6 3398 42

6�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

Page 4: 8.6 merge sort

4

7�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

8�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Page 5: 8.6 merge sort

5

9�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Merge

10�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23

Merge

Page 6: 8.6 merge sort

6

11�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23 98

Merge

12�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

23 98

Page 7: 8.6 merge sort

7

13�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98

14�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

14

Merge

23 98

Page 8: 8.6 merge sort

8

15�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

45

Merge

23 98 14

16�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

98 451423

Page 9: 8.6 merge sort

9

17�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

98 14

14

23 45

18�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 14

14 23

98 45

Page 10: 8.6 merge sort

10

19�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98 4514

14 23 45

20�������� � � �� � � � � ������������

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Merge

23 98 4514

14 23 45 98

Page 11: 8.6 merge sort

11

21�������� � � �� � � � � ������������

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

22�������� � � �� � � � � ������������

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 12: 8.6 merge sort

12

23�������� � � �� � � � � ������������

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

24�������� � � �� � � � � ������������

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 13: 8.6 merge sort

13

25�������� � � �� � � � � ������������

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

26�������� � � �� � � � � ������������

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 14: 8.6 merge sort

14

27�������� � � �� � � � � ������������

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

28�������� � � �� � � � � ������������

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 15: 8.6 merge sort

15

29�������� � � �� � � � � ������������

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

30�������� � � �� � � � � ������������

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 16: 8.6 merge sort

16

31�������� � � �� � � � � ������������

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

32�������� � � �� � � � � ������������

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 17: 8.6 merge sort

17

33�������� � � �� � � � � ������������

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

34�������� � � �� � � � � ������������

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 18: 8.6 merge sort

18

35�������� � � �� � � � � ������������

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

36�������� � � �� � � � � ������������

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 19: 8.6 merge sort

19

37�������� � � �� � � � � ������������

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

38�������� � � �� � � � � ������������

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 20: 8.6 merge sort

20

39�������� � � �� � � � � ������������

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

40�������� � � �� � � � � ������������

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 21: 8.6 merge sort

21

41�������� � � �� � � � � ������������

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

42�������� � � �� � � � � ������������

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 22: 8.6 merge sort

22

43�������� � � �� � � � � ������������

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

44�������� � � �� � � � � ������������

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 23: 8.6 merge sort

23

45�������� � � �� � � � � ������������

674523 14 6 3398 42

6 14 23 33 42 45 67 98

46�������� � � �� � � � � ������������

� ��������������

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 24: 8.6 merge sort

24

47�������� � � �� � � � � ������������

�����������

void 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++

48�������� � � �� � � � � ������������

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 25: 8.6 merge sort

25

49�������� � � �� � � � � ������������

50�������� � � �� � � � � ������������

������

� � �� ��� �� �� � ���������������� �� ���# �

� $ � ����� ��� � � �� � ��� �� ��� � �� �� ����� �� �

� " � �� � ��� ��� ��� � �� ��� ��� ���� ���� � ��� ��� ��