Thema: Delphi Array sortieren

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Array sortieren

  Alt 6. Mär 2006, 08:08
Hallo,

so ähnlich denke ich auch. Aber warum die Daten unnütz hin und her schieben?

Delphi-Quellcode:
unit DemoTypes;

interface

uses
  Types;

type
  TAdresse = record
    Name: String;
    Vorname: String;
    Strasse: String;
    PLZ: String;
    Ort: String;
  end;

  TAdressen = array of TAdresse;

  function IndexByName(const a: TAdressen; var index: Integer): TIntegerDynArray;

implementation

uses
  SysUtils;

function MinIndex(const a: TAdressen; ida: TIntegerDynArray; iLow, iHigh: Integer): Integer;
var
  i: Integer;
begin
  Result := iLow;
  for i := Succ(iLow) to iHigh do
    if CompareText(a[ida[i]].Name, a[ida[Result]].Name) < 0 then
      Result := i;
end;

procedure SwapIndex(ida: TIntegerDynArray; i, j: Integer);
var
  iTemp: Integer;
begin
  if i <> j then
  begin
    iTemp := ida[i];
    ida[i] := ida[j];
    ida[j] := iTemp;
  end;
end;

function IndexByName(const a: TAdressen; var index: Integer): TIntegerDynArray;
var
  i: Integer;
begin
  SetLength(Result, Length(a));
  for i := Low(a) to High(a) do
    Result[i] := i;
  for i := Low(Result) to Pred(High(Result)) do
    SwapIndex(Result, i, MinIndex(a, Result, i, High(Result)));
end;

end.
Wohlgemerkt - das ist der wenig effektive Algorithmus von Michael. Ich habe ihn lediglich ein klein wenig anders implementiert und ein dynamisches Array verwendet.

Grüße vom marabu
  Mit Zitat antworten Zitat