![]() |
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 |
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:
Grüße vom marabu
// 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; |
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. |
Re: Array Sortierung + random der höchsten werte
Kann mir jemand diesen BubbleSort erklären?
|
Re: Array Sortierung + random der höchsten werte
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz