My first Magazine pemrograman-kompetitif-dasar | Page 64
5 Divide and Conquer
Kasus Terburuk
Kasus paling buruk: ukuran hasil partisi sangat timpang. Hal ini terjadi ketika partisi membagi
array berukuran N menjadi dua subarray yang masing-masing berukuran N − 1 dan 1. Dalam
kasus ini, kedalaman rekursif menjadi mendekati N yang mengakibatkan kompleksitas total
quicksort menjadi O(N 2 ).
Gambar 5.33: Contoh hasil partisi untuk kasus terburuk.
Namun tidak perlu khawatir karena dalam kondisi normal, peluang terjadinya kasus terburuk
sangat kecil. Artinya, pada sebagian besar kasus, quicksort berjalan dengan sangat cepat.
5.3.3
Pemilihan Pivot
Terdapat beberapa strategi pemilihan pivot untuk mencegah hasil partisi yang terlalu
timpang:
• Pilih salah satu elemen secara acak, ketimbang selalu memilih elemen di tengah.
• Pilih median dari elemen paling depan, tengah, dan paling belakang.
Quicksort memiliki sifat tidak stable. Artinya jika dua elemen a 1 dan a 2 memenuhi:
• memiliki yang nilai sama, dan
• sebelum diurutkan a 1 terletak sebelum a 2 ,
maka setelah diurutkan, tidak dijamin a 1 akan tetap terletak sebelum a 2 .
5.4
Studi Kasus 3: Mencari Nilai Terbesar
Perhatikan contoh soal Nilai Terbesar berikut.
Contoh Soal 5.1: Nilai Terbesar
Diberikan sebuah array A yang memiliki N bilangan, carilah nilai terbesar yang ada pada A!
Masalah ini dapat diselesaikan dengan mudah menggunakan perulangan biasa. Namun,
sekarang mari kita coba selesaikan dengan divide and conquer .
54