logo

Snabbsortering vs Merge Sortering

Snabb sortering är en intern algoritm som är baserad på dela och erövra strategi. I denna:

  • Arrayen av element är uppdelad i delar upprepade gånger tills det inte går att dela upp det ytterligare.
  • Det är också känt som partitionsutbyte sortera .
  • Den använder ett nyckelelement (pivot) för att partitionera elementen.
  • En vänsterpartition innehåller alla de element som är mindre än pivoten och en högerpartition innehåller alla de element som är större än nyckelelementet.

snabbsort Slå samman sortering är en extern algoritm och baserad på dela och erövra strategi. I denna:

  • Elementen delas upp i två sub-arrayer (n/2) om och om igen tills endast ett element är kvar.
  • Merge sortering använder ytterligare lagringsutrymme för att sortera den extra arrayen.
  • Merge sort använder tre arrayer där två används för att lagra varje halva, och den tredje externa används för att lagra den slutliga sorterade listan genom att slå samman två andra och varje array sorteras sedan rekursivt.
  • Äntligen slås alla undermatriser samman för att göra det till en 'n' elementstorlek för matrisen.

Sammanfoga-Sortera-Tutorial



Snabbsortering vs Merge Sortering

    Uppdelning av element i arrayen: I sammanslagningssorteringen delas arrayen i bara två halvor (dvs. n/2). medan vid snabb sortering delas arrayen upp i valfritt förhållande. Det finns inget tvång att dela upp arrayen av element i lika delar i snabb sortering. Worst case komplexitet: Den värsta fallet komplexiteten av snabb sort är O(n^2) eftersom det behövs många jämförelser i det värsta tillståndet. medan sämsta fall och genomsnittsfall har samma komplexitet O(n log n). Användning med datauppsättningar: Merge sort kan fungera bra på alla typer av datauppsättningar oavsett storlek (antingen stor eller liten). medan den snabba sorteringen inte fungerar bra med stora datamängder. Krav på ytterligare lagringsutrymme : Merge sortering är inte på plats eftersom det kräver ytterligare minnesutrymme för att lagra de extra arrayerna. medan den snabba sorteringen är på plats eftersom den inte kräver någon extra lagring. Effektivitet : Sammanslagningssortering är effektivare och fungerar snabbare än snabbsortering vid större arraystorlek eller datauppsättningar. medan snabbsortering är effektivare och fungerar snabbare än sammanslagningssortering vid mindre matrisstorlek eller datauppsättningar. Sorteringsmetod: Snabbsorteringen är intern sorteringsmetod där data sorteras i huvudminnet. medan sammanslagningssorteringen är en extern sorteringsmetod där data som ska sorteras inte kan rymmas i minnet och behövs extraminne för sortering. Stabilitet : Merge sort är stabil eftersom två element med samma värde visas i samma ordning i sorterad utdata som de var i den osorterade inmatningsmatrisen. medan Quick sortering är instabil i detta scenario. Men det kan göras stabilt med några ändringar i koden. Föredraget för : Snabbsortering är att föredra för matriser. medan sammanslagningssortering är att föredra för länkade listor. Referenslokal: Quicksort uppvisar bra cache-lokalitet och detta gör quicksort snabbare än merge-sortering (i många fall som i virtuell minnesmiljö).
Underlag för jämförelse Snabb sortering Sammanfoga sortering
Partitionen av element i arrayen Uppdelningen av en array av element är i valfritt förhållande, inte nödvändigtvis uppdelad i hälften. I sammanslagningssorteringen delas arrayen i bara två halvor (dvs. n/2).
Komplexitet i värsta fall O(n^2) O(nlogn)
Fungerar bra på Det fungerar bra på mindre array Det fungerar bra på alla storlekar av array
Utförandehastighet Det fungerar snabbare än andra sorteringsalgoritmer för små datamängder som urvalssortering etc Den har en konstant hastighet på alla datastorlekar
Krav på ytterligare lagringsutrymme Mindre (på plats) Mer (inte på plats)
Effektivitet Ineffektivt för större arrayer Mer effektiv
Sorteringsmetod Inre Extern
Stabilitet Inte stabil Stabil
Föredraget för för Arrays för länkade listor
Referensort Bra fattig
Stort arbete Huvudarbetet är att dela upp arrayen i två sub-arrayer innan de sorteras rekursivt. Stort arbete är att kombinera de två sub-arrayerna efter att ha sorterat dem rekursivt.
Uppdelning av array Uppdelning av en array i sub-arrayer kan vara balanserad eller inte eftersom arrayen är uppdelad runt pivoten. Uppdelning av en array i underarray är alltid balanserad eftersom den delar upp arrayen exakt i mitten.
Metod Snabbsortering är en på plats sorteringsmetod. Sammansorteringsmetod är inte på plats.
Sammanslagning Quicksort behöver inte explicit sammanslagning av de sorterade sub-arrayerna; snarare omarrangerade underarrayerna ordentligt under partitioneringen. Merge sort utför explicit sammanslagning av sorterade sub-arrayer.
Plats Quicksort kräver inget extra arrayutrymme. För sammanslagning av sorterade sub-arrayer behöver den en temporär array med storleken lika med antalet indataelement.