Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array Sortierung + random der höchsten werte (https://www.delphipraxis.net/95290-array-sortierung-random-der-hoechsten-werte.html)

Chaosente 4. Jul 2007 17:56


Array Sortierung + random der höchsten werte
 
Also was ich machen will ist aus einem array die höchsten werte rauszusuchen und aus diesen zufällig einen auswählen.

Also zum beispiel ein array
1,2,1,2,2,0

Da sollte er 2,2,2 raussuchen
und dann einen davon nehmen

Wie kann cih das realisieren

marabu 4. Jul 2007 18:02

Re: Array Sortierung + random der höchsten werte
 
Hallo,

du kannst das Array mittels BubbleSort (absteigend) sortieren und nach Feststellung der Größe n des gewünschten Array-Abschnitts den Index des zufälligen Items per Random(n) bestimmen.

Delphi-Quellcode:
// uses Types;
procedure BubbleSort(var ida: TIntegerDynArray);
var
  i, iInner, iOuter: Integer;
begin
  // vom zweiten bis zum letzten Eintrag
  for iOuter := Succ(Low(ida)) to High(ida) do
    // für alle Einträge unterhalb des aktuellen
    for iInner := Pred(iOuter) downto Low(ida) do
      if ida[iInner] > ida[Succ(iInner)] then
      begin // Vertauschen um Teilvektor zu ordnen
        i := ida[Succ(iInner)];
        ida[Succ(iInner)] := ida[iInner];
        ida[iInner] := i;
      end else Break; // Teilvektor ist sortiert
end;
Grüße vom marabu

DeddyH 4. Jul 2007 18:05

Re: Array Sortierung + random der höchsten werte
 
Also, was mir spontan einfällt (ist allerdings sehr unperformant):

1. Ermitteln des Maximums (per Schleife)
2. Weitere Schleife und Speicherung des Index der Elemente, die den maximalen Wert aufweisen, in einem dynamischen Array oder einer TList
3. Per Random(Length(dynamischesArray)) einen zufälligen Index ermitteln.

//Edit oder so wie marabu sagt, sofern Du auch sortieren zulässt.

Chaosente 4. Jul 2007 18:09

Re: Array Sortierung + random der höchsten werte
 
Kann mir jemand diesen BubbleSort erklären?

mkinzler 4. Jul 2007 18:11

Re: Array Sortierung + random der höchsten werte
 
Hier im Forum suchenbubblesort


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz