Thema: Delphi Array sortieren

Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Array sortieren

  Alt 6. Mär 2006, 07:24
... oder TList.CustomSort...

Aber wenn er den Algorithmus selbst entwickeln will, bitte sehr.
Ich denke, das es so geht. N ist die Anzahl der Elemente.
Delphi-Quellcode:
Procedure SortArray (A : TMyArray; N : Integer);
Var
  i,j,k : Integer;
  H : TArrayElement;

Begin
  For i:=0 to N-2 do begin
    k := i; // Position des größten Elementes initialisieren
    For j := i+1 to N-1 do // Nun wird das größte Elemente im Array [i..N-1]
      If A[k] < A[j] Then // gesucht und in k die Position gemerkt
        k := j; // '<' mit '>' vertauschen, wenn AUFsteigend sortiert wird.
                      // k enthält die Position des größten Elementes [i..N]
    If i <> k Then Begin // Vertausche A[i] <--> A[k])
      H := A[i];
      A[i] := A[k];
      A[k] := H;
    End;
                 // A[i] enthält nun das größte Element des Arrays [i..N-1]
  End;
End;
Dann wird auch vermieden, das kleinste Element immer mitzuschleppen. Es reicht ja, sich nur den Index (hier: k) des bisher kleinsten/größten Elementes zu merken und nach dem Durchlauf das kleineste/größte Element an die Position 'i' zu kopieren, sprich: A[i] mit A[k] zu vertauschen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat