Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 17:43
Hier mal die grundelegende Quicksort-Funktion, diese kannst du sehr leicht in deinen Code einbauen, ich denke, das schaffst du dann schon.

Delphi-Quellcode:
//2 Zahlen tauschen
procedure TForm1.Swap(var Zahl1, Zahl2: integer);
var h: integer;
begin
  h := Zahl1;
  Zahl1 := Zahl2;
  Zahl2 := h;
end;

//Quicksort
procedure TForm1.QuickSort(var Tab: TArray; HighIndex: integer);
//Tab: Array mit den unsortierten Zahlen
//HighIndex: Anzahl der Zahlen/Datensätze, die sortiert werden sollen

  procedure Sort(links, rechts: integer);
  var i, j, x: integer;
  begin
    i := links;
    j := rechts;
    x := Tab[(links + rechts) div 2];
    repeat
      while Tab[i] < x do inc(i);
      while Tab[j] > x do dec(j);
      if i <= j then
      begin
        Swap(Tab[i], Tab[j]);
        inc(i);
        dec(j);
      end;
    until i > j;
    if links < j then Sort(links, j);
    if i < rechts then Sort(i, rechts);
  end;
begin
  Sort(1, HighIndex);
end;
Ich hoffe, du verstehst das.

Wichtig ist hier, dass du einen Typ TArray hast:

Delphi-Quellcode:
type
  TArray = array[1..20] of integer;
und natürlich die Deklaration der Variablen:

Delphi-Quellcode:
var
  Tab: TArray;
  Mit Zitat antworten Zitat