Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun : 2005 Versi : 5 Pertemuan 22 Quick Sort
Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat Menjelaskan kembali algoritma Quick sort
Outline Materi Algoritma Quick Sort Penerapan Quick 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
Bekerja dengan memartisi data menjadi 2 bagian sehingga: Quick sort Bekerja dengan memartisi data menjadi 2 bagian sehingga: a[kiri], a[kiri+1], …, a[i-1] < a[i] a[i] berada pada posisi yang tepat a[i+1], a[i+2], …, a[kanan] > a[i] [kiri] [kiri+1] … [i-1] [i] [i+1] … [kanan] … … 12 45 69 84 70
Quick sort (0,8) [0] [1] [2] [3] [4] [5] [6] [7] [8] 73 79 76 72 75 78 71 77 74 J=1 K=6 Tukar 73 71 76 72 75 78 79 77 74 J=2 K=3 Tukar 73 71 72 76 75 78 79 77 74 J=3 K=2 Tukar QS(0,1) QS(3,8) 72 71 73 76 75 78 79 77 74
Quick sort (0,1) [0] [1] [2] [3] [4] [5] [6] [7] [8] 72 71 73 76 75 78 79 77 74 J=2 K=1 Tukar 71 72 73 76 75 78 79 77 74
Quick sort (3,8) [0] [1] [2] [3] [4] [5] [6] [7] [8] 71 72 73 76 75 78 79 77 74 J=5 K=8 Tukar 71 72 73 76 75 74 79 77 78 J=6 K=5 Tukar 71 72 73 74 75 76 79 77 78 QS(3,4) QS(6,8)
Quick sort (3,4) [0] [1] [2] [3] [4] [5] [6] [7] [8] 71 72 73 74 75 76 79 77 78 J=4 K=3 71 72 73 74 75 76 79 77 78
Quick sort (6,8) [0] [1] [2] [3] [4] [5] [6] [7] [8] 71 72 73 74 75 76 79 77 78 J=… K=8 Tukar 71 72 73 74 75 76 78 77 79 QS(6,7)
Quick sort (6,7) [0] [1] [2] [3] [4] [5] [6] [7] [8] 71 72 73 74 75 76 78 77 79 J=8 K=7 Tukar 71 72 73 74 75 76 77 78 79 QS(6,6)
Quick sort (6,6) [0] [1] [2] [3] [4] [5] [6] [7] [8] 71 72 73 74 75 76 77 78 79 J=… K=6 71 72 73 74 75 76 77 78 79
Quick sort Void QS (int *Dt, int Kr, int Kn){ int i, j, k; if (Kr<Kn) { j = Kr; k = Kn+1; do { do j++; while (Dt[j]<Dt[Kr]); do k--; while (Dt[k]>Dt[Kr]); if (j<k) tukar (&Dt[j], &Dt[k]); } while (j<=k); tukar (&Dt[Kr], &Dt[k]); QS (Dt, Kr, k-1); QS (Dt, k+1, Kn); }
(diskusikan dalam kelompok) Penutup Untuk dapat menjelaskan kembali algoritma quick sort, mahasiswa membahas tugas pertemuan 22 no 1, 2, dan 3. (diskusikan dalam kelompok)