Quicksort on laajalti käytetty lajittelualgoritmi, joka tunnetaan tehokkuudestaan. Sen suorituskyvyn ymmärtäminen edellyttää vertailujen ja swapien odotettua määrää toteutuksen aikana. Tässä artikkelissa tarkastellaan näiden odotusten taustalla olevia matemaattisia periaatteita, joissa keskitytään Quicksortin probabilistisen analyysin tuloksiin.

Odotettu vertailujen määrä

Quicksortin odotettu vertailujen määrä riippuu pivotin valinnasta ja osioimisprosessista. Olettaen, että kaikki permutaatiot ovat yhtä todennäköisiä, keskimääräinen tapaus voidaan analysoida rekursiivisilla yhtälöillä. Kokoluokan n[] osalta odotetut vertailut, jotka on merkitty []C(n)[, täyttävät toiston:

]C(n) = n - 1 + frac{1} {n} sum {k = 0}^ {n-1} [C(k) + C(n - 1 - k)]

Tämä toistuminen yksinkertaistaa hyvin tunnettu tulos: [C(n) ... 2n n suurille n. Johtaminen sisältää summaamalla kaikki mahdolliset nivel kannat ja soveltamalla ominaisuuksia harmonisia numeroita.

Odotettu vaihtojen määrä

Quicksortin swapit tapahtuvat osioprosessin aikana. Odotettu swapien määrä liittyy vertailujen määrään ja nivelvalintojen jakautumiseen. Yhdenmukaisessa satunnaisuudessa odotetut swapit, jotka on merkitty S(n), voidaan arvioida analysoimalla osion vaiheet.

Jokainen osio vaihe sisältää vaihto-elementtejä varmistaa oikea sijoitus pivot. Odotetut swapit osion ovat verrannollinen koko subarrays. Yhteenvedossa kaikkien rekursiiviset puhelut tuottaa lähentämisestä: S(n) ... n ln n.

Yhteenveto odotuksista

  • Komparonit:[] Noin 2n n suurille n.
  • [[LLT:0]]Swaps:[[[LLT:1]]] Noin n n n n n suurelle [[LLT:2]]n [[LLT:3]].
  • Molemmat mittarit kasvavat logaritmisesti matriisin koon kanssa, mikä heijastaa Quicksortin tehokkuutta.