Quicksort in Delphi .. GENAUE Erklärung?

Also es ist jetzt 6 uhr und ich hab um 16 meine mündliche Abiturprüfung in Informatik! Beim WIederholen bin ich auf quicksort gestoßen … OKAY…
also ich würde jetzt am liebsten mal den delphi code hierreinposten und dazuzschreiben, was ich denke, was gemacht wird und fragen stellen dazu! :smile: Über schnelle Anwtorten bin ich sehr sehr SEHR dankbar!! :heart:

procedure Quicksort(l,r: Integer;var a : array of integer);

var i, j, Merke, Mitte: Integer; //okay variablen werden deklariert

begin
i := l; //was genau der sinn hiervon
j := r; //ist verstehe ich nicht
Mitte := a[(l+r) div 2]; //pivot wird festegelegt
repeat
while a[i] j;
if l

procedure Quicksort(l,r: Integer; var a: array of integer);
// die Procedure Quicksort sortiert eine Liste von Zahlen (stehen in a)
// im Bereich l (links) bis r (rechts)
// es wird nur der Bereich sortiert, der zwischen l und r liegt
var i, j, Merke, Mitte: Integer; // okay variablen werden deklariert
begin
i:= l; // hier wird links und rechts übernommen, um
j:= r; // während der procedure neu festgelegt zu werden
Mitte:= a[(l+r) div 2]; // ermitteln des Eintrages, der in der Mitte zwischen l und r steht
repeat
while a[i]

Wenn du die einfachen mathematischen Zeichen nicht verstehst, wird es schwer das ganze zu verstehen! Aber ich versuche es einmal:

Das Zahlenfeld musst du dir wie zwei lange Zeilen mit Zahlen vorstellen, die in ihrer Wertigkeit total unterschiedlich sind. Die Längen dieser Zeilen l & r werden den internen Laufindices i & j zugewiesen. Mit diesen Laufindices wird intern gearbeitet, also hoch- und runtergezählt. Als Anfangswert wird die mittlere Zahl zwischen den beiden Zeilen durch die Summation der Indexe und Halbierung als Pivot ermittelt. Wie schon geschrieben i & j sind Laufindexe, i läuft nach rechts und wird nach jedem Vergleich größer und j läuft nach links, wird nach jedem Vergleich kleiner. Beide werden verglichen, damit nicht der ganze Sotierzyklus ewig läuft. Wenn sich die Indices überschneiden, wurden alle Zahlen untersucht und eventuell, je nach Pivotgröße vertauscht. Du stellst vielleicht Fragen, warum getauscht wird, weil alle Zahlen im Feld, nach ihrer Größe aufsteigend sortiert werden sollen und am Ende, in richtiger Reihenfolge stehen sollen und zwar schnellst möglichst, deswegen „quick“.

Ich kann leider nicht helfen

l+r) div 2]; //pivot wird festegelegt

repeat
while a[i] j;
if l

Das ist genau das, was ich gebraucht habe! DANKE DANKE DANKE

Und? Wie ist es ausgegangen?

Und? Wie ist es ausgegangen?

14 PUNKTE :smiley: … aber es ging einfach nur um was vollkommen anderes ^^ . aber trotzdem danke =) mein verständnis ist jetzt nahezu gut =)

Hallo,

das war natürlich ein wenig kurzfristig. Falls die Antwort noch immer erwünscht wird, stehe ich gern zur Verfügung.

gegrüßt!

Also es ist jetzt 6 uhr und ich hab um 16 meine mündliche
Abiturprüfung in Informatik! Beim WIederholen bin ich auf
quicksort gestoßen … OKAY…

Hallo ikevtouch,

entschuldigung, dass ich wahrscheinlich schon zu spät bin ich möchte Dir aber trotzdem eine Antwort schreiben auch, wenn ich mich damit leider nicht auskenne. Ich beschäftgie mich seit ein paar Jahren mit Delphi, weiß aber leider auch nicht, was dies alles bedeutet, bzw. macht. Tut mir wirklich Leid.

Mit freundlichen Grüßen

leima