Innehållsförteckning[Dölj][Visa]
Datavetenskap handlar om att förstå komplexiteten hos algoritmer och datastrukturer.
Du har en lista över objekt som behöver sorteras, men du har inte tid eller resurser att använda en mer komplex sorteringsalgoritm.
Insättningssortering är en av de enklaste sorteringsalgoritmerna, men den kan vara långsam för stora listor.
Enkel implementering och förståelse har gjort denna metod till en favorit bland programmerare. Det är perfekt för små listor eller när du behöver en snabb lösning.
I det här blogginlägget kommer vi att titta på tidskomplexiteten för insättningssortering. Denna algoritm används för att sortera arrayer, och den har en körtid på O(n2). Detta innebär att tidskomplexiteten ökar med storleken på arrayen.
Den här algoritmen kan dock vara snabbare ofta än andra sorteringsalgoritmer, till exempel quicksort.
Låt oss titta närmare på hur instickssortering fungerar!
Vad är Insertion Sort Algorithm?
Ett element i taget, insättningssortering genererar en sorterbar array, som ofta kallas en lista.
Till exempel tillämpas sortering i komplicerade datorprogram som kompilatorer, där ordningen på tokens är viktig för tolkningen av programmet.
Hur fungerar sortering av infogning?
När vi använder insättningssortering för att sortera en array börjar algoritmen med att hitta den minsta posten i listan och infoga den på rätt plats.
Den hittar sedan det näst minsta föremålet och sätter in det i rätt position, och så vidare.
Algoritmen fungerar genom att gå igenom listan, jämföra varje objekt med det som kommer före det.
Om objekten är i fel ordning byter algoritmen dem. Den kontrollerar sedan om listan är sorterad, och om den är det, avslutas algoritmen.
I praktiken implementeras insättningssortering ofta med några rader kod, vilket gör det till ett populärt val för sortering av små arrayer. Tidskomplexitet bör dock beaktas när du använder denna algoritm.
Exempelvis:
Här är ett exempel på hur instickssortering fungerar. Vi kommer att använda följande array:
1, 2, 3, 4, 5, 6
Algoritmen börjar med att hitta den minsta posten i listan, som är 1. Den infogar den sedan i rätt position, den första positionen. Den hittar sedan det näst minsta föremålet, som är 2. Den sätter in det i rätt position, vilket är den andra positionen.
Den hittar sedan det näst minsta föremålet, som är 3. Den sätter in det i rätt position, vilket är den tredje positionen.
Den hittar sedan det näst minsta föremålet, som är 4. Den sätter in det i rätt position, vilket är den fjärde positionen, och så vidare. Listan är nu sorterad!
Vi kan se från exemplet att algoritmen tar sex jämförelser och byter för att sortera listan. Detta beror på att det tar n2 jämförelser och byten för att sortera en lista med n objekt. I detta fall är n=6.
Hur kan man förbättra insättningssorteringstidskomplexiteten?
Medan insättningssortering har en körtid på O(n2), kan den förbättras genom att använda en bättre sorteringsalgoritm, såsom quicksort.
Quicksort har en O(n log n) körtid, som är mycket snabbare än O(n2).
Men i vissa fall kan instickssortering vara snabbare än snabbsortering.
Till exempel, om listan redan är i ordning, tar sortering av infogning kortare tid än snabbsortering.
I praktiken implementeras insättningssortering ofta med några rader kod, vilket gör det till ett populärt val för sortering av små arrayer.
Tidskomplexitet bör dock beaktas när du använder denna algoritm.
Tidskomplexiteter
Worst Case Complexity O(n2):
Tidskomplexiteten ökar med storleken på arrayen. Det tar n2 jämförelser och byten för att sortera en lista med n objekt.
Till exempel, om vi har en array med storlek 1000, kommer algoritmen att ta 1,000,000 XNUMX XNUMX jämförelser och byten för att sortera arrayen.
Best Case Complexity O(n):
Tidskomplexiteten är densamma som storleken på inmatningsmatrisen. jag
Det krävs n jämförelser och byten för att sortera en lista med n objekt. Tänk till exempel på en array av storlek 5. Algoritmen kommer att kräva fem jämförelser och byten för att sortera arrayen.
Genomsnittlig fallkomplexitet O(n2):
Tidskomplexiteten ligger mellan det värsta och bästa fallet i detta fall.
Det tar n2 jämförelser och byten för att sortera en lista med n objekt.
Således är insättningssortering en stabil sorteringsalgoritm.
Varför är insättningssortering stabil?
Insättningssorteringen är stabil eftersom den bevarar ordningen av lika element i inmatningsmatrisen.
Detta är viktigt för många applikationer, såsom datahämtning eller finansiell analys. Om vi till exempel har två listor med siffror och vill jämföra dem måste vi se till att ordningen på elementen bevaras.
Om listorna inte är sorterade kommer vi inte att jämföra dem korrekt.
Kommentera uppropet