Einzelnen Beitrag anzeigen

marabu

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

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 19:57
Gab es in D3 schon dynamische Arrays?

Delphi-Quellcode:
function GetTopTenByIndex(values: array of integer): TIntegerDynArray;
var
  i: integer;
  list: TList;

  function ListSortCompare(index1, index2: integer): integer;
  begin
    // die Werte vergleichen, aber die Index-Werte sortieren
    if values[index1] < values[index2] then Result := -1
    else if values[index1] > values[index2] then Result := 1
    else Result := 0;
  end;

begin
  // weil TList einen QuickSort mit bringt...
  list := TList.Create;
  // Alle Indexwerte in die Liste
  for i := Low(values) to High(values) do
    list.Add(Pointer(i));
  // Sortieren
  list.Sort(@ListSortCompare);
  // Platz für Result-Vektor anfordern
  SetLength(Result, 10);
  // die Index-Werte der top ten übertragen
  for i := Low(Result) to High(Result) do
    Result[i] := Integer(list[High(values) - High(Result) + i]);
  // die Liste hat ihre Schuldigkeit getan - die Liste kann gehen...
  list.Free;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat