Pertemuan 21 Merge Sort

Post on 06-Jan-2016

283 views 37 download

description

Pertemuan 21 Merge Sort. Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5. Learning Outcomes. Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat Menjelaskan kembali algoritma merge sort. Outline Materi. Algoritma Merge Sort - PowerPoint PPT Presentation

Transcript of Pertemuan 21 Merge Sort

1

Pertemuan 21

Merge Sort

Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming

Tahun : 2005

Versi : 5

2

Learning Outcomes

Pada akhir pertemuan ini, diharapkan:

Mahasiswa dapat Menjelaskan kembali algoritma merge sort

3

Outline Materi

• Algoritma Merge Sort

• Penerapan Merge Sort

4

Sorting

Sorting merupakan proses mengurutkan data sesuai aturan tertentu:

Ascending: dari terkecil sampai terbesar

Descending: dari terbesar sampai terkecil

Tujuan sorting adalah untuk mempercepat proses pencarian (searching) data

5

Sorting

Teknik pengurutan sederhana:

Bubble sort

Selection sort

Insertion sort

Teknik pengurutan lanjut:

Quick sort

Merge sort

6

Merge sort

Pada tahap awal, semua data dibagi menjadi bagian/kelompok data terkecil.

Kemudian tiap dua data digabungkan menjadi 1 kelompok data gabungan.

Penggabungan data diteruskan sampai semua data terintegrasi menjadi satu

7

Merge sort (Putaran 1)

[0] [1] [2] [3] [4]

1252 69 40 18

[5] [6] [7] [8] [9]

5122 9 14 38

1252 69 40 18 5122 9 14 38

Gabung Gabung Gabung Gabung Gabung

5212 40 69 18 922 51 14 38

8

Merge sort (Putaran 2)

Gabung Gabung

5212 40 69 18 922 51 14 38

4012 52 69 9 2218 51 14 38

9

Merge sort (Putaran 3)

Gabung

14 384012 52 69 9 2218 51

14 38129 18 22 40 5251 69

10

Merge sort (Putaran 4)

Gabung

14 38

52 69129 14 18 22 4038 51

129 18 22 40 5251 69

11

Void merge (int *a, int *t, int PKr, int PMid, int PKn){

int i, l1, u1, l2, u2, k;

l1 = PKr; u1 = PMid-1;

l2 = PMid; U2 = PKn;

k = PKr;

while ((l1 <= u1) && (l2 <=u2))

t[k++] = (a[l1]<a[l2])?a[l1++:a[l2++];

while (l1<=u1) t[k++] = a[l1++];

while (l2<=u2) t[k++] = a[l2++];

for (i=Pkr; i<=PKn; i++) a[i]=t[i];

}

Merge sort 1

12

Void m_sort (int *a, int *t, int Kr, int Kn){

int mid;

if (Kr < Kn) {

mid = (Kr+Kn)/2;

m_sort(a, t, Kr, mid);

m_sort(a, t, mid+1, Kn);

merge(a, t, Kr, mid+1, kn);

}

}

Merge sort 2

13

Void mergeSort (int *Dt, int n){

int *temp;

temp = (int *) malloc ((n+1)*sizeof(int));

m_sort(Dt, temp, 0, n-1);

free(temp);

}

Merge sort 3

14

Penutup

• Untuk dapat Menjelaskan kembali algoritma merge sort, mahasiswa membahas tugas pertemuan 21 no 1, 2, dan 3.

(diskusikan dalam kelompok)