Pola dasar Anda adalah algoritma divide-and-menaklukkan , yang membagi (dan menggabungkan kembali) pekerjaan dalam waktu linier dan berulang pada potongan-potongan. Menggabungkan semacam bekerja seperti itu: menghabiskan waktu membagi input menjadi dua bagian yang kira-kira sama, mengurutkan masing-masing bagian secara rekursif, dan menghabiskan waktu menggabungkan dua bagian yang diurutkan.O ( n ) Θ ( n )Θ(nlogn)O(n)Θ(n)
Secara intuitif, melanjutkan ide membagi-dan-taklukkan, setiap tahap pembagian memakan waktu linier secara total, karena peningkatan jumlah keping untuk membagi sama persis dengan penurunan ukuran keping, karena waktu yang diambil oleh pembagian adalah linier. Total waktu berjalan adalah produk dari total biaya tahap divisi dikalikan dengan jumlah tahap divisi. Karena ukuran potongan dibelah dua pada setiap waktu, ada , sehingga total waktu berjalan adalah . (Hingga konstanta multiplikasi, dasar logaritma tidak relevan.)n ⋅ log ( n )log2(n)n⋅log(n)
Menempatkannya dalam persamaan (), salah satu cara untuk memperkirakan waktu berjalan dari algoritma semacam itu adalah dengan menyatakannya secara rekursif: . Jelas bahwa algoritme ini membutuhkan lebih dari waktu linier, dan kita dapat melihat lebih banyak dengan membagi dengan :
Ketika menggandakan, meningkat dengan jumlah yang konstan: meningkat secara logaritma, atau dengan kata lain, .T ( n ) = 2 T ( n / 2 ) + Θ ( n ) n T ( n )T(n)T(n)=2T(n/2)+Θ(n)nnT(n)/nT(n)/nT(n)=Θ(nlogn)
T(n)n=T(n/2)n/2+Θ(1)
nT(n)/nT(n)/nT(n)=Θ(nlogn)
Ini adalah contoh dari pola yang lebih umum: teorema master . Untuk algoritma rekursif yang membagi input dari ukuran menjadi lembar ukuran dan memakan waktu untuk melakukan pembagian dan rekombinasi, waktu berjalan memuaskan . Ini mengarah ke bentuk tertutup yang tergantung pada nilai-nilai dan dan bentuk . Jika dan , teorema master menyatakan bahwa .nan/bf(n)T(n)=a⋅T(n/b)+f(n)abfa=bf(n)=Θ(n)T(n)=Θ(nlogn)