Het sorteren van items in een lijst is een alledaagse taak en vaak tijdrovend. De term sorteren verwijst over het algemeen naar het rangschikken van de items in een lijst in oplopende of aflopende volgorde op basis van een vooraf gespecificeerde bestelrelatie. Sorteren is vaak bedoeld voor zoeken, wat zijn nog een andere fundamentele activiteit in gegevensverwerking is. Stel je voor hoe moeilijk het zou zijn geweest om een woord op een woordenboek te doorzoeken als de woorden erin niet waren geordend of gesorteerd. Dit is de reden waarom vermeldingen in een woordenboek in een standaard alfabetische volgorde worden bewaard. Talloze taken en berekeningen worden moeiteloos door eenvoudigweg te sorteren. En dit is waar sorteeralgoritmen naar de foto komen.
Een sorteeralgoritme is niets anders dan een methode om elementen van een lijst in een specifieke volgorde te ordenen, zoals de laagste tot de hoogste waarde, de hoogste tot de laagste waarde, toenemende volgorde, afnemende volgorde, alfabetische volgorde, etc. De meest gebruikte bestellingen zijn numerieke en lexicografische volgorde. Algoritmen gebruiken sortering vaak als een belangrijke subroutine. Er wordt een breed scala aan sorteeralgoritmen gebruikt, die elk een rijke reeks technieken gebruiken. Eén zo'n populair en toch even krachtig algoritme is het Divide and Conquer-algoritme, een algoritme dat is gebaseerd op multi-vertakte recursie. Snel sorteren en samenvoegen sorteren zijn de twee veelgebruikte algoritmen op basis van het algoritme Divide and Conquer.
Quick Sort is een zeer efficiënt en toch effectief sorteeralgoritme dat is gebaseerd op de divide and conquer-benadering, die vrij veel lijkt op de dynamische benadering waarbij een probleem wordt onderverdeeld in twee of meer deelproblemen en vervolgens recursief wordt opgelost. Als de grootte van de subproblemen klein genoeg is, worden ze eenvoudigweg op een eenvoudige manier opgelost, zonder gedoe. Ook wel partition-exchange-sortering genoemd, het snel-sorteeralgoritme verdeelt de lijst om te worden gesorteerd in drie hoofdonderdelen: 1) Draaiorgaan (centrale elementen), 2) elementen minder dan het draaipunt, en 3) elementen groter dan het draaipunt. Het draaipunt zelf wordt tussen de twee groepen naar de uiteindelijke positie verplaatst en QUICK SORT wordt vervolgens recursief toegepast.
Samenvoegsortering is nog een ander algemeen sorteeralgoritme op basis van de verdeel-en-heersingstechniek. Het is een van de meest gerespecteerde en populaire sorteeralgoritmen die zijn ontworpen om efficiënt te worden gebruikt om gegevens te sorteren die extern in een bestand worden opgeslagen. Het biedt O (n log n) gedrag in het slechtste geval tijdens het gebruik van O (n) extra opslag. Het verdeelt een verzameling 'A' in twee kleinere verzamelingen, die vervolgens worden gesorteerd. In de laatste fase worden deze twee gesorteerde verzamelingen weer samengevoegd tot één verzameling van grootte n. Dit is de gesorteerde lijst. Het algoritme is vrij snel en is ook een stabiele soort, en heeft de ideale voorkeur voor gekoppelde lijsten.
- Zowel Snel sorteren als Samenvoegen sorteren zijn de op delen gebaseerde sorteeralgoritmen met hetzelfde basisprincipe om een probleem in twee of meer deelproblemen op te delen en ze vervolgens recursief op te lossen. Ze verschillen echter in de samenvoegingsprocedures en in termen van prestaties. Snel sorteren is over het algemeen beter en sneller dan andere sorteeralgoritmen, waaronder samenvoegsortering als het gaat om kleine gegevensverzamelingen, terwijl samenvoegselectie de consistentie handhaaft, ongeacht het type gegevenssets. Snel sorteren heeft idealiter de voorkeur voor arrays, terwijl samenvoeg sorteren bij voorkeur de voorkeur heeft voor gekoppelde lijsten.
- Het sorteren in het snel sorteren-algoritme gebeurt recursief en voor elke recursieve oproep is een stapelplaats vereist. Het vereist geen extra ruimte voor samenvoegen, behalve een enkele geheugenruimte voor samenvoegen. Omdat het een in-situ sorteeralgoritme is, is er geen extra ruimte nodig om het sorteren uit te voeren. In feite gebruikt het dezelfde array tijdens het delen en samenvoegen van de array. In Merge Sort daarentegen zijn er verschillende manieren om gegevens in een bestand of als een array te representeren, dus het heeft zulke werkgebieden nodig als subbestanden of arrays van dezelfde grootte waarvoor extra ruimte nodig is.
- Het slechtste gevalgedrag voor Snel sorteren treedt op wanneer de partitionering ongebalanceerd is, afhankelijk van welke elementen worden gebruikt voor partitionering, in welk geval het algoritme asymptotisch zo langzaam als insertietypering loopt. De slechtste uitvoering van de Quick Sort is O (n2) en wordt overgelaten als een oefening. Het kan echter worden voorkomen door de juiste spil te kiezen. Het ergste geval van samenvoeg sorteren vindt daarentegen plaats wanneer het een maximum aantal vergelijkingen moet doen. Gezien de lineaire prestaties voor samenvoegen, is de worst case-uitvoering van de samenvoegsortering O (n log2 n).
- Hoewel de algoritmen voor snel sorteren en samenvoegen sorteren zijn gebaseerd op de verdeel- en heersingsbenadering voor sorteren, verschillen ze door de methoden die worden gebruikt om de splitsings- en samenvoegingsprocedures uit te voeren. Voor Quick Sort is het grootste deel van het werk om de lijst in twee sublijsten te verdelen, wat plaatsvindt voordat de sublijsten worden gesorteerd. Voor samenvoeg sorteren is het grootste deel van het werk om twee sublijsten samen te voegen die plaatsvinden nadat de sublijsten zijn gesorteerd. Samenvoegen sorteren vereist een tijdelijke array voor het samenvoegen van twee subarrays, terwijl er voor Quick Sort geen extra arrayruimte vereist is, waardoor deze meer ruimte-efficiënt is dan Marge Sort.
Zowel Snel sorteren als Samenvoeg sorteeralgoritmen zijn gebaseerd op de verdeel en heers benadering voor sorteren. Ze verschillen echter van elkaar door de methoden die worden gebruikt om de splitsing en de samenvoegingsprocedures uit te voeren. Ze werken in principe volgens hetzelfde principe - om een probleem in twee of meer deelproblemen op te delen en ze vervolgens recursief op te lossen. Samenvoegen sorteren is in het slechtste geval efficiënter dan Snel sorteren, maar de twee zijn even efficiënt in het gemiddelde geval. Maar snel sorteren is meer ruimte-efficiënt dan samenvoegen sorteren. Dus Quick Sort is ongetwijfeld sneller en beter dan Merge Sort, maar het wordt in weinig situaties inefficiënt, bijvoorbeeld als het gaat om vergelijkingen.