Algoritmen för snabbsortering är en sorteringsalgoritm för dividera och erövra som fungerar genom att rekursivt partitionera inmatningsmatrisen i mindre och mindre subarrayer tills varje subarray bara innehåller ett element. Algoritmen är snabb, effektiv och används ofta inom datavetenskap.
Så fungerar snabbsortering:
1. Dela: Välj ett pivotelement från arrayen (ofta det sista elementet).
2. Partition: Ordna om arrayen så att alla element mindre än pivoten är till vänster om pivoten och alla element större än pivoten är till höger. Pivotelementet är i sitt slutsorterade läge.
3. Rekurs: Upprepa de två ovanstående stegen för de vänstra och högra subarrayerna och dela upp dem rekursivt tills varje subarray bara innehåller ett element.
Exempel 1:
Betrakta arrayen [5, 3, 8, 2, 1, 4].
a. Dela:Välj det sista elementet, 1 som pivot.
b. Dela:
- Ordna om arrayen:[3, 2, 1, 5, 4, 8] (1 är i sin sorterade position).
c. Återfall:
- Vänster undergrupp:[3, 2, 1] (redan sorterad)
- Höger undergrupp:[5, 4, 8] (tillämpa snabbsortering rekursivt)
Efter att ha tillämpat snabbsortering på båda undermatriserna är den slutliga sorterade matrisen:[1, 2, 3, 4, 5, 8].
Exempel 2:
Sortera en större array
Betrakta en array [7, 2, 9, 5, 3, 4, 1, 8, 6].
a. Dela:Välj det sista elementet, 6, som pivot.
b. Dela:
- Ordna om arrayen:[2, 5, 3, 4, 1, 7, 9, 6] (6 är i sin sorterade position).
c. Återfall:
- Vänster undergrupp:[2, 5, 3, 4, 1] (tillämpa snabbsortering rekursivt)
- Höger undergrupp:[7, 9] (redan sorterad)
Efter att ha slutfört de rekursiva anropen är den sorterade matrisen:[1, 2, 3, 4, 5, 6, 7, 8, 9].
Tidskomplexitet:
- Bästa fall:O(n log n)
- Average-Case:O(n log n)
- Worst-case:O(n^2) (uppstår när arrayen redan är sorterad eller omvänd sorterad)
Sammantaget erbjuder Quick Sort-algoritmen en effektiv sorteringslösning med en bra medelvärdeskomplexitet på O(n log n). Dess enkelhet och mångsidighet har gjort det till en populär algoritm för att sortera uppgifter över olika programmeringsspråk.