Med bokstavligen dussintals sortering algoritmer som finns , avgöra vilka som fungerar bäst med ditt system beror på jämförelser av flera faktorer , såsom storleken på listan , hastigheten eller komplexitet algoritmen , och om du vill använda en nyckel för att sortera . Komplexitet
komplexitet ett sorteringsalgoritm mäts med O ( n ) , eller den " ordning n ", där n är storleken på listan . Den mäter hur många passerar det tar att sortera listan och beräknar sitt bästa , sämsta och genomsnittlig tid för att göra det . Vanliga komplikationer inkluderar N som en bästa fallet för sorterar såsom införing sortera och skal sortera , n log n , ( användning av en bas - 2 logaritmen , inte en bas - 10 ), som är komplexiteten för sammanslagningsreplikering sortera och heapsort , och N ^ , vilket är långsammare än den första gången och är hastigheten för val Sortera
lista skick
Ibland kommer du att veta hur de osorterade objekt i en lista är organiserade . : till exempel , om de är nästan sorteras i omvänd ordning , eller en lista med några unika objekt . Sådan kunskap hjälper dig att välja en effektiv algoritm för att sortera det . Till exempel använder insättning sortera att sortera en lista i omvänd ordning har en speltid på n ² , medan heap sort kan göra det snabbare , i n log n tid . På en lista som nästan är sorterad , är införandet sortera snabbare än heap sort . När listan innehåller en fullständigt randomiserad uppsättning data , välja en algoritm med ett genomsnittligt ärende komplexitet n log n gångtid , såsom heap sort , quicksort eller sammanfoga sort .
Liststorlek
Vissa algoritmer är svårare att använda än andra , så antalet element i en lista och hur ofta du behöver sortera kan hjälpa till att avgöra den algoritm du väljer . Sorterar som insättning sort är snabb och fungerar bra när du sorterar mindre listor , och är lätta att genomföra , men de är långsamma med större listor . Sorterar som använder en söndra - och - erövra algoritm som quicksort och merge sort är svårare att genomföra , men de sorterar större listor snabbare i genomsnitt fall .
Stabilitet
algoritm stabilitet beskriver huruvida sortera upprätthåller ordningen på objekt baserat på en sortering nyckel . Till exempel använder det första tecknet som en nyckel för en lista som har "John ", " Steve " och " Jim " i den ordningen , en stabil algoritm sorteras listan till "John ", " Jim " och " Steve ", medan en instabil algoritm kan eller inte kan sortera " Jim " innan " John ". Merge sort , insertion sort och bubble sort är alla stabila algoritmer medan skalet sort , selection sort och heap sort inte . Addera