![]() |
Selectionsort implementieren
Hallo zusammen,
ich bin ganz ehrlich: Ich habe wenig Ahnung von Informatik und von Delphi noch weniger... Nun haben wir einen Projektarbeit zu Sortierverfahren im Informatikunterricht und sind mit viiiiiiiieeeeeeeelllll Glück auf eine Gute Vorlage gestoßen, in die wir jetzt noch Selection Sort implementieren müssen Hier der Aufruf der Prozedur zu Quicksort:
Code:
Und hier die entsprechende Prozedur:
Procedure TForm1.Button8Click(Sender: TObject);
Var arr: Tarr; x: integer; Begin setlength(arr, memo2.lines.count); For x := 0 To memo2.lines.count - 1 Do // Annahme der Eingabe arr[x] := strtoint(memo2.lines[x]); // Änderung in Integer Quicksort(arr); // Aufruf der Prozedur Quicksort For x := 0 To memo2.lines.count - 1 Do // Zähler memo2.lines[x] := inttostr(arr[x]); // Ausgabe Setlength(Arr, 0); End;
Code:
Wie würde ioh jetzt möglichst einfach Selectionsort implementieren?
Procedure Quicksort(Var Data: Tarr);
Procedure Quick(li, re: integer); //Procedure Quick Var l, r, h, p: Integer; Begin If Li < Re Then Begin p := Data[Trunc((li + re) / 2)]; // Auslesen des Pivo Elementes bei der Hälfte l := Li; // Teillisten werden Variablen zugeordnet r := re; While l < r Do Begin // kleine Werte nach links, große Werte nach rechts While data[l] < p Do // linke Teilliste inc(l); While data[r] > p Do // rechte Teilliste dec(r); If L <= R Then Begin // Teillisten werden "alten" Speicherplätzen zugeordet und die h := data[l]; // Schleife wird neu durchlaufen -> die Teillisten werden wieder data[l] := Data[r]; // geteilt data[r] := h; inc(l); dec(r); End; End; If Form1.checkbox1.checked Then Begin // Schritte werden gezählt -> Vorgang wird der Anzahl der drawarray(data); // Elemente angepasst form1.Memo1.lines[form1.memo1.lines.count - 1] := form1.Memo1.lines[form1.memo1.lines.count - 1] + ' Pivot = ' + inttostr(p); End; quick(li, r); // Prozedur "Quick" wird angewendet quick(l, re); End; End; Begin If form1.checkbox1.Checked Then Begin form1.memo1.clear; //Ausgabe drawarray(Data); form1.memo1.lines[0] := form1.memo1.lineS[0] + ' Original Folge.'; End; Quick(0, high(data)); //Prozedur Quick wird aufgerufen End; Unser Ansatz:
Code:
Vielleicht hat ja jemand Spaß daran uns zu helfen... Könnt ihr vielleicht auch ein gutes Delphi-Tutorial empfehlen?
procedure SelectionSort(var A: array of Integer);
var i, j: Integer; pos, temp: Integer; begin for i := Low(A) to High(A) - 1 do begin pos := i; for j := i + 1 to High(A) do begin if A[j] < A[pos] then pos := j; end; temp := A[i]; A[i] := A[pos]; A[pos] := temp; end; Danke und Gruß Marvin |
AW: Selectionsort implementieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz