My first Magazine pemrograman-kompetitif-dasar | Page 60

5 Divide and Conquer Partisi Hoare Ada beberapa algoritma untuk melakukan partisi secara in place atau tanpa array sementara. Kita akan membahas salah satu algoritma partisi yaitu algoritma partisi Hoare. Cara kerja algoritma Hoare adalah sebagai berikut: 1. Pilih sebuah pivot . 2. Siapkan dua variabel penunjuk, kiri dan kanan dengan masing-masing variabel menunjuk ujung kiri dan ujung kanan dari array . 3. Gerakkan variabel kiri ke arah kanan, sampai elemen yang ditunjuk > pivot. 4. Gerakkan variabel kanan ke arah kiri, sampai elemen yang ditunjuk ≤ pivot. 5. Jika kiri ≤ kanan, tukar elemen yang ditunjuk kiri dan kanan, kemudian gerakkan kiri ke kanan satu langkah dan kanan ke kiri satu langkah. 6. Jika kiri ≤ kanan, maka kembali ke tahap 3. Jika tidak, selesai. Mari kita terapkan algoritma tersebut. Asumsikan kita akan melakukan partisi pada suatu array [2, 5, 7, 4, 6, 1, 3, 8, 9]. Misalkan kita memilih pivot = 5. Simak Gambar 5.21 hingga Gambar 5.30 yang mengilustrasikan algoritma Hoare dari awal hingga akhir. 2 5 7 4 6 1 3 8 9 ^ ^ kiri kanan Gambar 5.21: Langkah 1: Kita mulai dengan membuat dua variabel penunjuk, yaitu kiri dan kanan dengan masing-masing variabel menunjuk ujung kiri dan ujung kanan dari array . 2 5 7 4 6 1 3 8 9 ^ ^ kiri kanan Gambar 5.22: Gerakkan variabel kiri ke arah kanan, sampai elemen yang ditunjuk > pivot. 2 5 7 4 6 1 3 8 9 ^ ^ kiri kanan Gambar 5.23: Gerakkan variabel kanan ke arah kiri, sampai elemen yang ditunjuk ≤ pivot. 2 5 7 4 6 1 3 8 9 ^ kanan ^ kiri Gambar 5.24: Karena kiri ≤ kanan, tukar elemen yang ditunjuk kiri dan kanan, lalu gerakkan kiri ke kanan satu langkah serta kanan ke kiri satu langkah. 50