My first Magazine pemrograman-kompetitif-dasar | Page 63

5.3 Studi Kasus 2: Quicksort 15: 16: 17: 18: 19: 20: if pLe f t ≤ pRight then SWAP (arr[pLe f t], arr[pRight]) pLe f t ← pLe f t + 1 pRight ← pRight − 1 end if end while . Sampai saat ini, dipastikan pRight < pLe f t QUICKSORT (le f t, pRight) 23: QUICKSORT (pLe f t, right) 24: end if 25: end procedure 21: 22: Analisis Algoritma Quicksort Pada setiap kedalaman rekursi, array hasil partisi belum tentu memiliki ukuran yang sama. Hasil partisi bergantung pada nilai pivot yang kita pilih. Karena hal ini, kita dapat menganalisis kompleksitas quicksort dalam 3 kasus: Kasus Terbaik Pembelahan menjadi dua subarray sama besar menjamin kedalaman rekursif sedangkal mungkin. Sehingga untuk kasus terbaik, jalannya algoritma menjadi seperti merge sort dan bekerja dalam O(N log N). 1 2 3 4 Gambar 5.31: Contoh hasil partisi untuk kasus terbaik. Kasus Rata-Rata Pada kebanyakan kasus, ukuran hasil partisi berbeda-beda. Secara rata-rata kompleksitas- nya masih dapat dianggap O(N log N). 10 Gambar 5.32: Contoh hasil partisi untuk kasus rata-rata. 53