AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Array Sortierung + random der höchsten werte
Thema durchsuchen
Ansicht
Themen-Optionen

Array Sortierung + random der höchsten werte

Ein Thema von Chaosente · begonnen am 4. Jul 2007 · letzter Beitrag vom 4. Jul 2007
Antwort Antwort
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#1

Array Sortierung + random der höchsten werte

  Alt 4. Jul 2007, 18:56
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
  Mit Zitat antworten Zitat
marabu

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

Re: Array Sortierung + random der höchsten werte

  Alt 4. Jul 2007, 19:02
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#3

Re: Array Sortierung + random der höchsten werte

  Alt 4. Jul 2007, 19:05
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#4

Re: Array Sortierung + random der höchsten werte

  Alt 4. Jul 2007, 19:09
Kann mir jemand diesen BubbleSort erklären?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Array Sortierung + random der höchsten werte

  Alt 4. Jul 2007, 19:11
Hier im Forum suchenbubblesort
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 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