ComputersProgrammering

Quicksort als programmeermethode

In 1960, K. A. Hoar een methode ontwikkeld voor het snel sorteren van informatie, werd de meest bekende. Vandaag is het op grote schaal gebruikt in de programmering, want het heeft een veel positieve eigenschappen: het kan worden gebruikt voor algemene gevallen, het vereist een kleine toename in het extra geheugen, compatibel met verschillende soorten lijsten en eenvoudig te implementeren. Maar er zijn ook nadelen, die moet Quicksort: het gebruik van arbeidsmiddelen toegestaan veel fouten, en het is een beetje instabiel.

Echter, het is de meest bestudeerde versie. Na de eerste betaling Hoare, velen doen zijn dichte studie. grote basis is opgericht op theoretische vragen van het vinden van de tijd besteed aan het werk, die wordt ondersteund door empirisch bewijs. Er waren echte voorstellen aan de basis algoritme en een verhoogde snelheid te verbeteren.

Quicksort is heel gebruikelijk, het kan overal te vinden. Op basis hiervan de werkwijze wordt uitgevoerd TList.Sort, aanwezig in alle versies (behalve 1) Delphi, de bibliotheekfunctie tijd die nodig was voltooid, qsort in C ++.

Het basisprincipe van de werking kan worden geformuleerd als een "verdeel en heers". Het komt breken van de lijst in twee groepen en worden gesorteerd voor elk onderdeel zelf. Bijgevolg is meer aandacht moet worden besteed aan het scheidingsproces, waarbij gebeurt het volgende: wordt bepaald door een basiselement en relatief herschikt zijn hele lijst. Gebouwd aan de linkerkant van een groep van kandidaten, waarvan de waarde lager is dan alle andere transferregels. Het blijkt dat het belangrijkste element in de gesorteerde lijst is in zijn rechtmatige plaats. De volgende fase - een uitdaging recursieve sorteerfuncties beide zijden van de elementen ten opzichte van de basis. Het eindigt het proces werkt alleen als de lijst slechts één element, dat moet worden gesorteerd. Dus, om een programmering functie als een snelle soort onder de knie, is het noodzakelijk om het werk van een lager niveau algoritmes te weten: a) de keuze van het basisdeel; b) een lijst van de meest effectieve permutatie twee reeksen met kleinere en grotere waarden te produceren.

Vertrouwd te maken met de eerste beginselen. Bij de keuze van het basiselement, idealiter moet worden geselecteerd uit de lijst met gemiddelde. Vervolgens de breuk is verdeeld in twee gelijke helften. Gewoon het berekenen van de gemiddelde waarde in de lijst is erg moeilijk, dus zelfs de snelste sortering omzeilt dit calculus kant. Maar de keuze van het basiselement met de maximale of minimale waarde - ook niet de beste optie. In geval bepalen van daarvoor zorgt lege lijsten worden gewaarborgd, en de tweede full. Vandaar de conclusie dat als basisdeel een die dichter bij het gemiddelde worden gekozen, maar de maximum en minimum.

Zodra een keuze wordt bepaald, kunt u overgaan tot de ontbinding algoritme. Deze zogenaamde binnenste loops Snel sorteren. Alles is gebouwd op twee Rapid Access indexen: eerst gaan over de elementen van links naar rechts, de tweede, integendeel, van rechts naar links. Begint uitvoering bediening rechts: de index op de lijst en vergelijk alle waarden naar de belangrijkste. De cyclus is voltooid wanneer het element kleiner dan of gelijk aan de basislijn. Dat wil zeggen, er is een vergelijking en vermindert de waarde van de index. Aan de linker als het werk voltooid is groter dan of gelijkwaardig. Hier, de vergelijking waarde toeneemt.

In dit stadium van partitioneringsalgoritme waarvan quicksort omvat, kunnen twee situaties voordoen. De eerste is dat de index aan de linkerkant is minder dan rechts. Dit wijst op een fout, dan zijn er elementen waarop deze is vermeld in de lijst zijn in de verkeerde volgorde. Output - veranderen hun plaatsen. De tweede situatie is wanneer zowel de kolom gelijk is aan of gepasseerd. Dit duidt op een succesvolle scheiding van de lijst, dat wil zeggen, het werk is nu voltooid.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 nl.atomiyme.com. Theme powered by WordPress.