Also ich bin es nochmal mit mienem Delphi Projekt QuickSort implementieren. Ich hatte ja bereits in einem anderen Thread einmal gepostet und wollte euch hier nochmal dafür danken aber ich bin jetzt auch noch dummer weise auf ein neues Problem gestoßen udn zwar habe ich tatsächlich einen Algorithmus gefunden der mein Problem behebt, auch wenn ich zu meiner Schande gestehen muss das ich es nicht selbst hin bekommen habe
allerdings war das die einzige Lösung, weil durch die Tatsache das das ein Schulprojekt ist, die Zeit doch sehr drängt.
Das Problem ist folgendes mir sind einige der Begriffe und Aufrufe die hier verwendet werden einfach in keiner Art und weise ein Begriff wenn ihr mir also eventuell kurz die Funktion des Quellcodes erläutern könntet den ich poste wäre ich unglaublich dankbar
Also der Quellcode den ich gefunden habe um eine Liste zu Sortieren und gleichzeitig Vergleiche und Swaps zu zählen sieht wie folgt aus:
Delphi-Quellcode:
Procedure TWortListe quick;
begin
Vergleiche :=0;
Swaps :=0;
PegelStart(round(Listenlaenge*log2(Listenlaenge))); //Dies PegelStart ist das nur eine Variabele oder was anderes? und warum log2?
quicksort(1,Listenlaenge,vergleiche,swaps); //mit dem Aufruf Quicksort habe ich allgemein verständnisprobleme
end;
Procedure TWortListe.Quicksort(anfang,ende: Cardinal;var act, sw : Cardinal);
var linkerzeiger, rechterzeiger : Cardinal;
mitte : string;
begin
linkerzeiger := anfang;
rechterzeiger := ende;
mitte := Kollektion[(linkerzeiger+rechterzeiger)div2];
Pegel.Position := Vergleiche; //Hier taucht der Pegel nochmal auf :?:
while(Kollektion[linkerzeiger]<mitte) do
begin
linkerzeiger := linkerzeiger+1;
inc(act); //Was ist act :(
end;
while(Kollektion[rechterzeiger]>mitte) do
begin
rechterzeiger := rechterzeiger-1;
inc(act); //Hier habe ich nochmal das selbe Problem
end;
if linkerzeiger <= rechterzeiger
then
begin
Tauschen(Kollektion[linkerzeiger],Kollektion[rechterzeiger]);
linkerzeiger := linkerzeiger + 1;
rechterzeiger := rechterzeiger - 1;
inc(Swaps);
inc(act);
end; (*if*)
until rechterzeiger < linkerzeiger;
if anfang < rechterzeiger
then quicksort(anfang, rechterzeiger, Vergleiche, swaps); //Hier habe ich wieder ein PRoblem mit dem Aufruf Quciksort
if linkerzeiger < ende
then quicksort(linkerzeiger,ende,Vergleiche,swaps); //Hier auch und ich ahb das in den Klammer nicht verstanden
end; (*quicksort*)
Also das ist mien Problem um das es sich handelt allerdings könnte natürlich jetzt das Problem auftauchen das ihr wiel ihr nur ienen Ausschnitt des Algorithmus zur verfügung habt, ihr nicth völlig verstehen könnt was das jetzt alles zu bedeuten hat
aber ich vertraue auf euer Delphi wissen, dass ihr mir helfen könnt das wäre echt super genial.
Ich entschuldige mich auch für die teilweise eventuell dummen Fragen aber ich ibn einfach in keiner art und weise in der Thematik wirklich dirn bzw nicht oder noch nicth in der Lage einen solchen Algorithmus zu programmieren.
Ich danke euch jetzt schonmal für eure Mühen!!!
mfg Tabriel
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]