Översikt
Bubblessortering, ofta kallad bubble sort på engelska, är en av de enklaste sorteringsalgoritmerna. Den bygger på att jämföra intilliggande element i en lista och byta plats när de står i fel ordning, tills hela listan är sorterad. Namnet syftar på hur mindre element "bubblar" mot början eller slutet av listan beroende på implementationen.
Hur det fungerar
Algoritmen går igenom listan i flera omgångar (pass). I varje pass jämförs par av intilliggande element; om de är i fel ordning byts deras platser. Efter ett pass ligger åtminstone ett element på sin slutgiltiga position. Genom att upprepa processen minskar antalet osorterade element tills inga byten behövs.
Egenskaper och varianter
- Stabil: bevarar ordningen mellan likvärdiga element.
- I plats (in-place): kräver konstant extra minne.
- Tidskomplexitet: i allmänhet O(n²) i medel- och värsta fall, men med en tidig avbrottskontroll kan bästa fall bli O(n) för redan sorterade listor.
- Varianter: optimerad bubblessortering som använder en flagga för att upptäcka att inga byten skedde, och "cocktail shaker" (bidirektionell bubbel) som växlar riktning mellan pass.
Historia och användning
Bubblessortering har länge använts i undervisning tack vare sin enkelhet och lätta visualisering: stegvisa byten gör det tydligt hur sortering går till. I praktiska system ersätts den ofta av snabbare algoritmer för stora dataset, men den kan vara acceptabel för mycket små listor eller där kodens läsbarhet prioriteras framför prestanda.
Jämförelser och notabla fakta
Jämfört med andra enkla n²-algoritmer som urvalssortering (selection sort) och insättningssortering (insertion sort) är bubblessortering ofta långsammare i praktiken men mer intuitiv att förklara. Insertion sort är till exempel ofta bättre för nästan sorterade listor utan extra optimering. Bubblessortering används även som pedagogiskt exempel i algoritmvisualiseringar och som bas för att förstå komplexitetsbegreppet. För vidare läsning om algoritmen och dess varianter, se mer detaljerad beskrivning och illustrativa animationer via relaterade resurser.


