logo

Hurtig sortering vs Merge Sort

Hurtig sortering er en intern algoritme, som er baseret på divide and conquer-strategi. Heri:

  • Arrayen af ​​elementer er opdelt i dele gentagne gange, indtil det ikke er muligt at opdele det yderligere.
  • Det er også kendt som sortering af partitionsudveksling .
  • Den bruger et nøgleelement (pivot) til at partitionere elementerne.
  • En venstre partition indeholder alle de elementer, der er mindre end pivoten, og en højre partition indeholder alle de elementer, der er større end nøgleelementet.

quicksort Flet sortering er en ekstern algoritme og baseret på opdel og hersk strategi. Heri:

  • Elementerne opdeles i to sub-arrays (n/2) igen og igen, indtil der kun er ét element tilbage.
  • Merge sort bruger ekstra lagerplads til sortering af hjælpearrayet.
  • Merge sort bruger tre arrays, hvor to bruges til at gemme hver halvdel, og den tredje eksterne bruges til at gemme den endelige sorterede liste ved at flette andre to og hvert array sorteres derefter rekursivt.
  • Til sidst bliver alle underarrays slået sammen for at gøre det til 'n' elementstørrelse af arrayet.

Flet-Sortér-Tutorial



Hurtig sortering vs Merge Sort

    Opdeling af elementer i arrayet: I flettesorteringen er arrayet delt i kun 2 halvdele (dvs. n/2). hvorimod i tilfælde af hurtig sortering, opdeles arrayet i et hvilket som helst forhold. Der er ingen tvang til at opdele rækken af ​​elementer i lige dele i hurtig sortering. Worst case kompleksitet: Worst case kompleksiteten af ​​hurtig sortering er O(n^2), da der er behov for mange sammenligninger i den værste tilstand. hvorimod i merge sort, worst case og gennemsnitlige case har samme kompleksitet O(n log n). Brug med datasæt: Merge sort kan fungere godt på enhver type datasæt uanset størrelsen (enten stor eller lille). hvorimod den hurtige sortering ikke kan fungere godt med store datasæt. Ekstra lagerpladskrav: Merge sort er ikke på plads, fordi det kræver ekstra hukommelsesplads til at gemme hjælpearrays. hvorimod den hurtige sortering er på plads, da den ikke kræver yderligere opbevaring. Effektivitet: Flet sortering er mere effektivt og fungerer hurtigere end hurtig sortering i tilfælde af større matrixstørrelse eller datasæt. hvorimod hurtig sortering er mere effektiv og fungerer hurtigere end flette sortering i tilfælde af mindre matrixstørrelse eller datasæt. Sorteringsmetode: Hurtig sortering er intern sorteringsmetode, hvor dataene sorteres i hovedhukommelsen. hvorimod flettesorteringen er en ekstern sorteringsmetode, hvor de data, der skal sorteres, ikke kan rummes i hukommelsen og har brug for ekstra hukommelse til sortering. Stabilitet : Merge sort er stabil, da to elementer med samme værdi vises i samme rækkefølge i sorteret output, som de var i input usorteret matrix. hvorimod Quick sortering er ustabil i dette scenarie. Men det kan gøres stabilt ved hjælp af nogle ændringer i koden. Foretrukket til: Hurtig sortering foretrækkes for arrays. hvorimod Merge sortering foretrækkes for linkede lister. Referencelokalitet: Quicksort udviser god cache-lokalitet, og dette gør quicksort hurtigere end flettesortering (i mange tilfælde som i virtuelt hukommelsesmiljø).
Grundlag for sammenligning Hurtig sortering Flet sortering
Opdelingen af ​​elementer i arrayet Opdelingen af ​​et array af elementer er i et hvilket som helst forhold, ikke nødvendigvis opdelt i halvdelen. I flettesorteringen er arrayet delt i kun 2 halvdele (dvs. n/2).
Worst case kompleksitet O(n^2) O(nlogn)
Fungerer godt på Det fungerer godt på mindre array Det fungerer fint på enhver størrelse af array
Udførelseshastighed Det virker hurtigere end andre sorteringsalgoritmer for små datasæt som udvælgelsessortering osv Det har en ensartet hastighed på enhver størrelse af data
Ekstra lagerpladskrav Mindre (på stedet) Mere (ikke på plads)
Effektivitet Ineffektiv til større arrays Mere effektivt
Sorteringsmetode Indre Ekstern
Stabilitet Ikke stabil Stabil
Foretrukket til for Arrays for sammenkædede lister
Referencested godt fattige
Større arbejde Det største arbejde er at opdele arrayet i to sub-arrays, før de sorteres rekursivt. Det største arbejde er at kombinere de to underarrays efter at have sorteret dem rekursivt.
Opdeling af array Opdeling af et array i sub-arrays kan eller kan ikke være afbalanceret, da arrayet er opdelt omkring pivoten. Opdeling af et array i underarray er altid afbalanceret, da det opdeler arrayet nøjagtigt i midten.
Metode Hurtig sortering er en in-place sorteringsmetode. Flet sortering er ikke på plads sorteringsmetode.
Sammenlægning Quicksort behøver ikke eksplicit sammensmeltning af de sorterede sub-arrays; snarere omarrangerede underarrayerne korrekt under partitionering. Merge sort udfører eksplicit fletning af sorterede underarrays.
Plads Quicksort kræver ikke yderligere array-plads. Til sammenlægning af sorterede sub-arrays har den brug for et midlertidigt array med størrelsen lig med antallet af input-elementer.