My first Magazine pemrograman-kompetitif-dasar | Page 53

5.2 Studi Kasus 1: Merge Sort 5.2 Studi Kasus 1: Merge Sort Merge sort adalah algoritma pengurutan yang memiliki kompleksitas O(N log N). Algoritma merge sort terus membagi array yang ingin diurutkan menjadi dua sampai tersisa satu elemen, kemudian menggabungkannya kembali sambil mengurutkannya. Inti pengurutan merge sort ada pada tahap combine. Cara kerja algoritma ini adalah: 1. Divide : jika array yang akan diurutkan lebih dari 1 elemen, bagi array tersebut menjadi dua array sama besar (atau mendekati sama besar jika panjang array tersebut ganjil). Kemudian lakukan merge sort pada masing-masing subarray tersebut. 2. Conquer : ketika array berisi hanya 1 elemen, tidak perlu lakukan apapun. Array yang berisi 1 elemen sudah pasti terurut. 3. Combine : saat kita memiliki dua array yang telah terurut, kita bisa menggabungkan (merge ) keduanya menjadi sebuah array yang terurut. Mengapa array yang berukuran 1 bisa kita katakan sudah terurut? Jika ada sebuah array berukuran 1 (contohnya [42]), maka elemen tersebut tidak memiliki elemen lain yang bisa dibandingkan dengan elemen tersebut. Jadi, array tersebut sudah terurut. 5.2.1 Contoh Eksekusi Merge Sort Diberikan sebuah array [5, 2, 7, 6, 1, 8, 9, 3]. Kita ingin mengurutkan array tersebut menggu- nakan merge sort . Gambar 5.2 hingga Gambar 5.8 mengilustrasikan proses yang terjadi dari awal hingga array tersebut terurut. Kita memulai proses pengurutan dari tahap divide. Kita akan membagi array menjadi bebera- pa subarray hingga masing-masing memiliki 1 elemen. 5 2 7 6 1 8 9 3 5 2 7 6 1 8 9 3 Gambar 5.2: Langkah 1: Karena ukuran array lebih dari 1 elemen, kita bagi array yang kita miliki menjadi dua bagian. 5 2 7 6 5 2 7 6 1 8 9 3 1 8 9 3 Gambar 5.3: Langkah 2: Array yang kita miliki masih lebih dari 1 elemen, bagi lagi masing-masing menjadi dua. 43