logo

Snel sorteren versus samenvoegen sorteren

Snel sorteren is een intern algoritme dat is gebaseerd op de verdeel-en-heers-strategie. In deze:

  • De reeks elementen wordt herhaaldelijk in delen verdeeld totdat het niet meer mogelijk is deze verder te verdelen.
  • Het is ook bekend als partitie uitwisseling sorteren .
  • Het gebruikt een sleutelelement (pivot) voor het verdelen van de elementen.
  • Eén linkerpartitie bevat al die elementen die kleiner zijn dan het spilelement en één rechterpartitie bevat al die elementen die groter zijn dan het sleutelelement.

Snel sorteren Sorteer samen is een extern algoritme en gebaseerd op de verdeel-en-heers-strategie. In deze:

  • De elementen worden keer op keer in twee subarrays (n/2) gesplitst totdat er nog maar één element overblijft.
  • Samenvoegsortering gebruikt extra opslagruimte voor het sorteren van de hulparray.
  • Samenvoegsortering gebruikt drie arrays waarbij er twee worden gebruikt voor het opslaan van elke helft, en de derde externe wordt gebruikt om de uiteindelijk gesorteerde lijst op te slaan door de andere twee samen te voegen en elke array wordt vervolgens recursief gesorteerd.
  • Ten slotte worden alle subarrays samengevoegd om de elementgrootte van de array ‘n’ te maken.

Samenvoegen-Sorteren-Tutorial



Snel sorteren versus samenvoegen sorteren

    Verdeling van elementen in de array: Bij het samenvoegen wordt de array in slechts twee helften verdeeld (d.w.z. n/2). terwijl bij snel sorteren de array in elke verhouding wordt verdeeld. Er is geen verplichting om de reeks elementen snel in gelijke delen te verdelen. Complexiteit in het slechtste geval: de complexiteit in het slechtste geval van snel sorteren is O(n^2), omdat er in de slechtste omstandigheden veel vergelijkingen nodig zijn. terwijl bij het samenvoegen het slechtste geval en het gemiddelde geval dezelfde complexiteit hebben O (n log n). Gebruik met datasets: Samenvoegsortering kan goed werken op elk type dataset, ongeacht de grootte ervan (groot of klein). terwijl de snelle sortering niet goed kan werken met grote datasets. Extra opslagruimte vereist: Samenvoegsortering is niet aanwezig omdat er extra geheugenruimte nodig is om de hulparrays op te slaan. terwijl de snelle sortering aanwezig is omdat er geen extra opslagruimte voor nodig is. Efficiëntie: Samenvoegen is efficiënter en werkt sneller dan snel sorteren bij grotere arraygroottes of datasets. terwijl Snel sorteren efficiënter is en sneller werkt dan samenvoegsortering in het geval van kleinere arraygroottes of datasets. Sorteermethode: De snelle sortering is een interne sorteermethode waarbij de gegevens in het hoofdgeheugen worden gesorteerd. terwijl de samenvoegsortering een externe sorteermethode is waarbij de te sorteren gegevens niet in het geheugen kunnen worden ondergebracht en een hulpgeheugen nodig is voor het sorteren. Stabiliteit: Samenvoegsortering is stabiel omdat twee elementen met dezelfde waarde in dezelfde volgorde verschijnen in de gesorteerde uitvoer als in de ongesorteerde invoerarray. terwijl Snel sorteren in dit scenario onstabiel is. Maar het kan stabiel worden gemaakt met behulp van enkele codewijzigingen. Voorkeur voor: Snel sorteren heeft de voorkeur voor arrays. terwijl samenvoegen de voorkeur heeft voor gekoppelde lijsten. Referentielocatie: Quicksort vertoont een goede cachelocatie en dit maakt quicksort sneller dan merge sort (in veel gevallen zoals in een virtuele geheugenomgeving).
Basis voor vergelijking Snel sorteren Sortering samenvoegen
De partitie van elementen in de array Het splitsen van een reeks elementen vindt in elke verhouding plaats, en is niet noodzakelijkerwijs in tweeën gedeeld. Bij het samenvoegen wordt de array in slechts twee helften verdeeld (d.w.z. n/2).
In het ergste geval complexiteit O(n^2) O(nlogn)
Werkt goed op Het werkt goed op kleinere arrays Het werkt prima op elke arraygrootte
Snelheid van uitvoering Het werkt sneller dan andere sorteeralgoritmen voor kleine datasets zoals selectiesortering enz Het heeft een consistente snelheid voor elke gegevensgrootte
Extra opslagruimte nodig Minder (ter plaatse) Meer (niet ter plaatse)
Efficiëntie Inefficiënt voor grotere arrays Efficiënter
Sorteermethode Intern Extern
Stabiliteit Niet stabiel Stal
Voorkeur voor voor arrays voor gekoppelde lijsten
Plaats van referentie Goed arm
Groot werk Het belangrijkste werk is het verdelen van de array in twee subarrays voordat deze recursief worden gesorteerd. Het belangrijkste werk is het combineren van de twee subarrays nadat ze recursief zijn gesorteerd.
Verdeling van array De verdeling van een array in subarrays kan al dan niet in evenwicht zijn, aangezien de array rond het draaipunt is verdeeld. De verdeling van een array in subarrays is altijd gebalanceerd, omdat de array precies in het midden wordt verdeeld.
Methode Snel sorteren is een sorteermethode ter plaatse. Samenvoegsortering is niet de juiste sorteermethode.
Samenvoegen Quicksort vereist geen expliciete samenvoeging van de gesorteerde subarrays; in plaats daarvan werden de subarrays correct herschikt tijdens het partitioneren. Samenvoegsortering voert het expliciet samenvoegen van gesorteerde subarrays uit.
Ruimte Quicksort vereist geen extra arrayruimte. Voor het samenvoegen van gesorteerde subarrays is een tijdelijke array nodig met een grootte gelijk aan het aantal invoerelementen.