Inhaltsverzeechnes[Verstoppen][Show]
Informatik ass alles ëm d'Komplexitéit vun Algorithmen an Datestrukturen ze verstoen.
Dir hutt eng Lëscht vun Elementer déi zortéiert musse ginn, awer Dir hutt net d'Zäit oder d'Ressourcen fir e méi komplexe Sortimentalgorithmus ze benotzen.
Insertion Sortéierung ass ee vun den einfachsten Sortéierungsalgorithmen, awer et ka lues sinn fir grouss Lëschte.
Einfach Ëmsetzung a Verständnis hunn dës Method e Favorit ënner Programméierer gemaach. Et ass perfekt fir kleng Lëschten oder wann Dir eng séier Léisung braucht.
An dësem Blog Post wäerte mir d'Zäitkomplexitéit vun der Insertiounssortéierung kucken. Dësen Algorithmus gëtt benotzt fir Arrays ze sortéieren, an et huet eng Runtime vun O(n2). Dëst bedeit datt d'Zäitkomplexitéit mat der Gréisst vum Array eropgeet.
Wéi och ëmmer, dësen Algorithmus kann méi séier sinn wéi aner Sortéierungsalgorithmen, sou wéi Quicksort.
Loosst eis méi no kucken wéi d'Insertiounssortéierung funktionnéiert!
Wat ass Insertion Sort Algorithmus?
Een Element gläichzäiteg, Insertion Sort generéiert eng sortéierbar Array, déi dacks als Lëscht bezeechent gëtt.
Zum Beispill gëtt d'Sortéierung a komplizéierte Computerprogrammer wéi Compiler applizéiert, wou d'Uerdnung vun Tokens wichteg ass fir d'Interpretatioun vum Programm.
Wéi funktionéiert Insertion Sort?
Wa mir Insertiounssort benotze fir en Array ze sortéieren, fänkt den Algorithmus un andeems Dir dee klengste Element an der Lëscht fënnt an et an déi richteg Positioun asetzt.
Et fënnt dann den nächste klengsten Element an setzt se an déi richteg Positioun a sou weider.
Den Algorithmus funktionnéiert andeems Dir duerch d'Lëscht loopt, all Element vergläicht mat deem dee virdru kënnt.
Wann d'Elementer an der falscher Uerdnung sinn, tauscht den Algorithmus se. Et kontrolléiert dann fir ze kucken ob d'Lëscht zortéiert ass, a wann et ass, endet den Algorithmus.
An der Praxis gëtt d'Insertiounssort dacks mat e puer Zeilen Code implementéiert, wat et zu enger populärer Wiel mécht fir kleng Arrays ze sortéieren. Wéi och ëmmer, d'Zäitkomplexitéit sollt berücksichtegt ginn wann Dir dësen Algorithmus benotzt.
Beispill:
Hei ass e Beispill wéi d'Insertiounssortéierung funktionnéiert. Mir wäerten déi folgend Array benotzen:
1, 2, 3, 4, 5, 6
Den Algorithmus fänkt un mam klengste Punkt an der Lëscht ze fannen, dat ass 1. Et setzt se dann an déi richteg Positioun, déi éischt Positioun. Et fënnt dann den nächste klengsten Element, dat ass 2. Et setzt se an déi richteg Positioun, dat ass déi zweet Positioun.
Et fënnt dann den nächste klengsten Element, dat ass 3. Et setzt se an déi richteg Positioun, déi drëtt Positioun ass.
Et fënnt dann den nächste klengsten Element, deen 4. Et setzt se an déi richteg Positioun, déi véiert Positioun ass, etc. D'Lëscht ass elo zortéiert!
Mir kënnen aus dem Beispill gesinn datt den Algorithmus sechs Vergläicher an Tauscht hëlt fir d'Lëscht ze sortéieren. Dëst ass well et dauert n2 Vergläicher a Swaps fir eng Lëscht vun n Elementer ze sortéieren. An dësem Fall ass n=6.
Wéi verbessert d'Insertion Sort Time Komplexitéit?
Wärend d'Insertiounssort eng Runtime vun O(n2), kann et verbessert ginn andeems Dir e bessere Sortéierungsalgorithmus benotzt, wéi zum Beispill Quicksort.
Quicksort huet eng O(n Log n) Runtime, déi vill méi séier ass wéi O(n2).
Wéi och ëmmer, an e puer Fäll kann d'Insertiounssortéierung méi séier sinn wéi Quicksort.
Zum Beispill, wann d'Lëscht schonn an der Rei ass, dauert d'Insertiounssortéierung manner Zäit wéi Quicksort.
An der Praxis gëtt d'Insertiounssort dacks mat e puer Zeilen Code implementéiert, wat et zu enger populärer Wiel mécht fir kleng Arrays ze sortéieren.
Wéi och ëmmer, d'Zäitkomplexitéit sollt berücksichtegt ginn wann Dir dësen Algorithmus benotzt.
Zäit Komplexitéiten
Schlëmmst Fall Komplexitéit O(n2):
D'Zäitkomplexitéit erhéicht mat der Gréisst vum Array. Et brauch n2 Vergläicher a Swaps fir eng Lëscht vun n Elementer ze sortéieren.
Zum Beispill, wa mir eng Array vun der Gréisst 1000 hunn, hëlt den Algorithmus 1,000,000 Vergläicher a Swaps fir d'Array ze sortéieren.
Beschte Fall Komplexitéit O(n):
D'Zäitkomplexitéit ass d'selwecht wéi d'Gréisst vum Inputarray. ech
t hëlt n Vergläicher an Tauscht fir eng Lëscht vun n Elementer ze sortéieren. Zum Beispill, betruecht eng Array vu Gréisst 5. Den Algorithmus wäert fënnef Vergläicher an Tauscht huelen fir d'Array ze sortéieren.
Duerchschnëtt Case Komplexitéit O(n2):
D'Zäitkomplexitéit ass tëscht de schlëmmste a beschte Fall Komplexitéiten an dësem Fall.
Et brauch n2 Vergläicher a Swaps fir eng Lëscht vun n Elementer ze sortéieren.
Also ass d'Insertiounssortéierung e stabile Sortéierungsalgorithmus.
Firwat ass Insertion Sort stabil?
Insertion Sort ass stabil well et d'Uerdnung vun gläichen Elementer am Input Array behält.
Dëst ass wichteg fir vill Uwendungen, sou wéi d'Datenerzéiung oder d'Finanzanalyse. Zum Beispill, wa mir zwou Lëschte vun Zuelen hunn a se wëllen vergläichen, musse mir sécher sinn datt d'Uerdnung vun den Elementer erhale bleift.
Wann d'Lëschte net zortéiert sinn, vergläiche mir se net genee.
Hannerlooss eng Äntwert