Matematiska grundvalar för att spara: härleda förväntade jämförelser och byten i Quicksort
Quicksort är en allmänt använda sorteringsalgoritm känd för sin effektivitet. Förstå dess prestanda innebär att analysera det förväntade antalet jämförelser och swaps under utförande. Denna artikel utforskar de matematiska principerna bakom dessa förväntningar, med fokus på den probabilistiska analysen av Quicksort.
Förväntat antal jämförelser
Det förväntade antalet jämförelser i Quicksort beror på valet av pivot och partitioneringsprocessen. Förutsatt att alla permutationer är lika sannolikt, kan det genomsnittliga fallet analyseras med hjälp av återkommande ekvationer. För en rad storlek n, de förväntade jämförelserna, betecknas som ]]]C(n), uppfyller återfallet:
]C(n) = n - 1 + frac{1|n} sum {k=0} [C(k) + C(n - 1 - k)]]
Denna återkommande förenklar till ett välkänt resultat: ]C(n) ≈ 2n ln n[]]] för stora ]]]][]]]]]. Härledningen innebär att man sumer över alla möjliga pivotpositioner och tillämpar egenskaper hos harmoniska tal.
Förväntat antal swaps
Swaps i Quicksort inträffar under partitioneringsprocessen. Det förväntade antalet swaps är relaterat till antalet jämförelser och fördelningen av pivotval. Under enhetlig slumpmässighet kan de förväntade swapsna, betecknas som ]S(n), approximeras genom att analysera partitioneringsstegen.
Varje partition steg innebär byteselement för att säkerställa korrekt placering av pivoten. De förväntade swaps per partition är proportionella till storleken på underarrayerna. Summing över alla återkommande samtal ger en approximation: S(n) ≈ n .
Sammanfattning av förväntningar
- ] Jämförelser: Ungefär 2n ln n för stor ][]].
- ]Swaps: Ungefär n ln n för stor ][]].
- Båda mätvärdena växer logaritmiskt med arraystorlek, vilket återspeglar Quicksorts effektivitet.