472 Shares 9383 views

Quicksort als Methode Programmier

Im Jahr 1960 entwickelte K. A. Hoar ein Verfahren zur schnellen Sortierung von Informationen, wurde der berühmteste. Heute ist es weit verbreitet in der Programmierung verwendet wird, wie es viele positiven Eigenschaften hat: es kann für allgemeine Fälle verwendet wird, bedarf es eine kleine Erhöhung des zusätzlichen Speicher, kompatibel mit verschiedenen Arten von Listen und einfach zu implementieren. Aber es gibt auch Nachteile, die hat Quicksort: mit Arbeit viele Fehler erlaubt, und es ist etwas instabil.

Allerdings ist es die am meisten untersuchte Version. Nach der ersten Zahlung Hoare, viele tun die dichte Studie. große Basis wurde auf theoretische Fragen etabliert auf dem Arbeits verbringt die Zeit zu finden, das von empirischen Daten untermauert wird. Es gab konkrete Vorschläge den Basisalgorithmus und eine erhöhte Geschwindigkeit zu verbessern.

Quicksort ist sehr häufig, kann es überall zu finden. Auf dieser Grundlage wird das Verfahren TList.Sort, in allen Versionen (außer 1) Delphi, die Bibliothek Funktion der Zeit implementiert es zu vervollständigen nahm zu, qsort in C ++.

Das Grundprinzip der Operation kann als „Teile und Herrsche“ formuliert werden. Es tritt brechen die Liste in zwei Gruppen und sind für jeden Teil von selbst sortiert. Daraus folgt, dass sollte mehr Aufmerksamkeit auf den Trennprozess zu zahlen, während die die folgenden Ereignisse eintritt: ein Basiselement bestimmt wird, und hat seine gesamte Liste relativ neu geordnet. Errichtet links von einer Gruppe von Kandidaten, ist der Wert, von dem weniger als alle anderen Übertragungsregeln. Es stellt sich heraus, dass das Hauptelement in der sortierten Liste in seinem rechtmäßigen Platz ist. Die nächste Stufe – eine Herausforderung rekursiven Sortierfunktionen für beiden Seiten der Elemente relativ zu der Basis. Es endet der Prozess funktioniert nur, wenn die Liste nur ein Element enthält, das heißt sortiert werden. Somit wird, um eine Programmierfunktion als schnelle Art zu meistern, ist es notwendig, die Arbeit der untergeordneten Algorithmen zu wissen: a) die Wahl des Basiselements; b) eine Liste der effektivstenen Permutation, um zwei Sätze mit kleineren und größeren Werten.

Machen Sie sich mit ersten Prinzipien. Wenn das Basiselement der Wahl, sollte idealerweise aus der Liste der Durchschnitt ausgewählt werden. Dann auf der Pause in zwei gleiche Hälften geteilt. Rein rechnerisch der Durchschnittswert in der Liste ist sehr schwierig, so dass auch die schnellste Sortierung umgeht dieses Kalkül Seite. Aber die Wahl des Grundelements mit dem maximalen oder minimalen Wert – auch nicht die beste Option. Falls eine solche Bestimmung eines schafft leere Listen garantiert werden, und die zweite voll. Daraus ergibt sich die Schlußfolgerung, daß als Basiselement sollte man gewählt werden, die näher an dem Durchschnitt liegt, aber auf dem Maximum und Minimum.

Sobald eine Wahl bestimmt wird, können Sie auf den Dekompositionsalgorithmus fortzufahren. Dieser sogenannte innere Schleifen schnell sortieren. Alles ist auf zwei Rapid-Access-Indizes erstellt: zuerst die Elemente geht von links nach rechts, den zweiten, im Gegenteil, von rechts nach links. Beginnt Betrieb Ausführung rechts: der Index auf der Liste und vergleichen Sie alle Werte auf die Haupt. Der Zyklus ist abgeschlossen, wenn das Element kleiner oder gleich dem Ausgangswert. Das heißt, es ist ein Vergleich und verringert den Wert des Index. Auf der linken Seite, wenn die Arbeit beendet ist größer als oder gleich Wert. Hier wird der Vergleichswert erhöht.

In diesem Stadium des Partitionierungsalgorithmus, den quicksort umfasst, können zwei Situationen entstehen. Die erste ist, dass der Index auf der linken Seite ist kleiner als rechts. Dies zeigt einen Fehler an, dann gibt es Elemente, auf die sie in der Liste angegeben wurden sind in der falschen Reihenfolge. Ausgang – ihre Plätze tauschen. Die zweite Situation ist, wenn beide der Säule gleich oder gekreuzt. Dies deutet auf eine erfolgreiche Trennung der Liste, das heißt, die Arbeit ist nun abgeschlossen.