INHOUDSOPGAWE[Versteek][Wys]
Rekenaarwetenskap gaan alles daaroor om die kompleksiteite van algoritmes en datastrukture te verstaan.
Jy het 'n lys items wat gesorteer moet word, maar jy het nie die tyd of hulpbronne om 'n meer komplekse sorteeralgoritme te gebruik nie.
Invoegingssortering is een van die eenvoudigste sorteeralgoritmes, maar dit kan stadig wees vir groot lyste.
Maklike implementering en begrip het hierdie metode 'n gunsteling onder programmeerders gemaak. Dit is perfek vir klein lysies of wanneer jy 'n vinnige oplossing nodig het.
In hierdie blogpos sal ons kyk na die tydskompleksiteit van invoegingssortering. Hierdie algoritme word gebruik om skikkings te sorteer, en dit het 'n looptyd van O(n2). Dit beteken dat die tydskompleksiteit toeneem met die grootte van die skikking.
Hierdie algoritme kan egter dikwels vinniger wees as ander sorteeralgoritmes, soos quicksort.
Kom ons kyk van nader na hoe invoegingssortering werk!
Wat is die invoegingssorteeralgoritme?
Een element op 'n slag, invoegingssortering genereer 'n sorteerbare skikking, wat gereeld as 'n lys genoem word.
Sortering word byvoorbeeld toegepas in ingewikkelde rekenaarprogramme soos samestellers, waar die volgorde van tekens belangrik is vir die interpretasie van die program.
Hoe werk invoegingssortering?
Wanneer ons invoegingssortering gebruik om 'n skikking te sorteer, begin die algoritme deur die kleinste item in die lys te vind en dit in die korrekte posisie in te voeg.
Dit vind dan die volgende kleinste item en plaas dit in die regte posisie, ensovoorts.
Die algoritme werk deur deur die lys te blaai en elke item te vergelyk met die een wat daarvoor kom.
As die items in die verkeerde volgorde is, ruil die algoritme dit om. Dit kyk dan om te sien of die lys gesorteer is, en as dit is, eindig die algoritme.
In die praktyk word invoegingssortering dikwels geïmplementeer deur 'n paar reëls kode te gebruik, wat dit 'n gewilde keuse maak om klein skikkings te sorteer. Tydkompleksiteit moet egter in ag geneem word wanneer hierdie algoritme gebruik word.
voorbeeld:
Hier is 'n voorbeeld van hoe invoegingssortering werk. Ons sal die volgende skikking gebruik:
1, 2, 3, 4, 5, 6
Die algoritme begin deur die kleinste item in die lys te vind, wat 1 is. Dit plaas dit dan in die korrekte posisie, die eerste posisie. Dit vind dan die volgende kleinste item, wat 2 is. Dit plaas dit in die korrekte posisie, wat die tweede posisie is.
Dit vind dan die volgende kleinste item, wat 3 is. Dit plaas dit in die korrekte posisie, wat die derde posisie is.
Dit vind dan die volgende kleinste item, wat 4 is. Dit plaas dit in die korrekte posisie, wat die vierde posisie is, ensovoorts. Die lys is nou gesorteer!
Ons kan uit die voorbeeld sien dat die algoritme ses vergelykings en omruilings neem om die lys te sorteer. Dit is omdat dit n neem2 vergelykings en omruilings om 'n lys van n items te sorteer. In hierdie geval, n=6.
Hoe om die kompleksiteit van invoegingssorteertyd te verbeter?
Terwyl invoegingssortering 'n looptyd van O(n2), kan dit verbeter word deur 'n beter sorteeralgoritme te gebruik, soos quicksort.
Quicksort het 'n O(n log n) looptyd, wat baie vinniger is as O(n2).
In sommige gevalle kan invoegingssortering egter vinniger wees as quicksort.
Byvoorbeeld, as die lys reeds in orde is, sal invoegingssortering minder tyd neem as quicksort.
In die praktyk word invoegingssortering dikwels geïmplementeer deur 'n paar reëls kode te gebruik, wat dit 'n gewilde keuse maak om klein skikkings te sorteer.
Tydkompleksiteit moet egter in ag geneem word wanneer hierdie algoritme gebruik word.
Tydskompleksiteite
Ergste geval kompleksiteit O(n2):
Die tydskompleksiteit neem toe met die grootte van die skikking. Dit neem n2 vergelykings en omruilings om 'n lys van n items te sorteer.
Byvoorbeeld, as ons 'n skikking van grootte 1000 het, sal die algoritme 1,000,000 XNUMX XNUMX vergelykings en omruilings neem om die skikking te sorteer.
Beste geval kompleksiteit O(n):
Die tydskompleksiteit is dieselfde as die grootte van die invoerskikking. ek
t neem n vergelykings en omruilings om 'n lys van n items te sorteer. Oorweeg byvoorbeeld 'n skikking van grootte 5. Die algoritme sal vyf vergelykings en ruilings neem om die skikking te sorteer.
Gemiddelde saakkompleksiteit O(n2):
Die tydskompleksiteit is tussen die ergste en beste geval kompleksiteite in hierdie geval.
Dit neem n2 vergelykings en omruilings om 'n lys van n items te sorteer.
Dus, invoegingssortering is 'n stabiele sorteeralgoritme.
Waarom is invoegingssortering stabiel?
Invoegingssortering is stabiel omdat dit die volgorde van gelyke elemente in die invoerskikking behou.
Dit is belangrik vir baie toepassings, soos dataherwinning of finansiële ontleding. As ons byvoorbeeld twee lyste getalle het en hulle wil vergelyk, moet ons seker maak dat die volgorde van die elemente behoue bly.
As die lyste nie gesorteer is nie, sal ons dit nie akkuraat vergelyk nie.
Lewer Kommentaar