Med bokstavelig talt dusinvis av sortering algoritmer tilgjengelig, bestemme hvilke som fungerer best med ditt system vil avhenge av sammenligninger av flere faktorer, som for eksempel størrelsen på listen , hastigheten eller kompleksitet av algoritmen , og om du vil bruke en nøkkel til å sortere . Kompleksitet
Kompleksiteten i en sortering algoritme er målt ved O ( n ) , eller " orden n ", der n er størrelsen på listen . Den måler hvor mange passerer det tar å sortere listen og beregner sitt beste, verste og gjennomsnittlig tid til å gjøre det. Vanlige kompleksiteten innbefatter N som en beste tilfelle for sorterer som for eksempel innsetting av slag og skallet sorter , n log n, (ved hjelp av en base -2 logaritme, ikke en base -10 ), som er kompleksiteten for flettingen slag og heapsort , og n ² , som er tregere enn første gang, og er hastigheten for utvalget slags
List Tilstand
Noen ganger vil du vite hvordan usorterte elementer i en liste er organisert. : for eksempel , enten de er nesten sorteres , i omvendt rekkefølge, eller en liste med par unike elementer . Slik kunnskap hjelper deg å velge en effektiv algoritme for å sortere det . For eksempel bruker innsetting slag for å sortere en liste i omvendt rekkefølge har en kjøretid på n ² , mens haug typen kan gjøre det raskere , i n log n gang . På en liste som er nesten sortert, er innsetting slags raskere enn heap slag. Når listen inneholder en helt tilfeldig sett av data , velg en algoritme med en gjennomsnittlig tilfelle kompleksitet n log n kjører tid, for eksempel heap sortere, quicksort eller flette slag.
List Size
Noen algoritmer er vanskeligere å bruke enn andre, slik at antall elementer i en liste, og hvor ofte du trenger å sortere kan bidra til å bestemme den algoritmen du vil velge . Sorterer som innsetting typen er rask og fungerer godt når sortering mindre lister , og er enkle å implementere, men de er trege med større lister . Sorterer som bruker en splitt og hersk algoritme som quicksort og merge typen er vanskeligere å gjennomføre , men de slags større lister raskere i gjennomsnitt tilfeller.
Stabilitet
< p > algoritme stabilitet beskriver om den slags opprettholder rekkefølgen av elementer basert på en sortering tasten. For eksempel bruker det første tegnet som en nøkkel for en liste som har " John ", " Steve" og " Jim" i den rekkefølgen, en stabil algoritmen sorterer listen til " John ", " Jim" og " Steve ", mens en ustabil algoritme kan eller ikke sortere " Jim " før " John ". Flette sortere, innsetting sortere og boble typen er alle stabile algoritmer mens skallet sortering, utvalg sortere og heap slags ikke .