Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun : 2005 Versi : 5 Pertemuan 21 Merge Sort
Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat Menjelaskan kembali algoritma merge sort
Outline Materi Algoritma Merge Sort Penerapan Merge Sort
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
Sorting Teknik pengurutan sederhana: Bubble sort Selection sort Insertion sort Teknik pengurutan lanjut: Quick sort Merge sort
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
Merge sort (Putaran 1) [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 52 12 69 40 18 22 51 9 14 38 52 12 69 40 18 22 51 9 14 38 Gabung Gabung Gabung Gabung Gabung 12 52 40 69 18 22 9 51 14 38
Merge sort (Putaran 2) 12 52 40 69 18 22 9 51 14 38 Gabung Gabung 12 40 52 69 9 18 22 51 14 38
Merge sort (Putaran 3) 12 40 52 69 9 18 22 51 14 38 Gabung 9 12 18 22 40 51 52 69 14 38
Merge sort (Putaran 4) 9 12 18 22 40 51 52 69 14 38 Gabung 9 12 14 18 22 38 40 51 52 69
Merge sort 1 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 2 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 3 Void mergeSort (int *Dt, int n){ int *temp; temp = (int *) malloc ((n+1)*sizeof(int)); m_sort(Dt, temp, 0, n-1); free(temp); }
(diskusikan dalam kelompok) Penutup Untuk dapat Menjelaskan kembali algoritma merge sort, mahasiswa membahas tugas pertemuan 21 no 1, 2, dan 3. (diskusikan dalam kelompok)