Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array Sortieren (https://www.delphipraxis.net/83564-array-sortieren.html)

ehret 4. Jan 2007 15:28


Array Sortieren
 
Hi

ich will einen Array sortieren. Dabei tritt allerdings das Problem auf, dass z.B. 54 kleiner als 6 ist, oder 44 kleiner als 5. Da ich gleichzeitig auch noch Text sortieren will, kann ich den Variablentyp nicht auf Integer umstellen. Kann mir jemand helfen?

Danke im Voraus

Klaus01 4. Jan 2007 15:31

Re: Array Sortieren
 
Du könnstest zur Sortierung die Zahlen aus dem einen Array herausfiltern und in einem gesonderten Array (Array of Integer) sortieren.
Mit den Texten machst Du das gleiche, aber in einem StringArray.
Anschließend wandelst Du die Zahlen des ZahlenArray wieder in Strings und führst die Array wieder zusammen.
Die Zahlen vor die Texte.
Dann sollte es passen.

Und noch ein herzliches Willkommen in der DP.

Grüße
Klaus

Udontknow 4. Jan 2007 15:46

Re: Array Sortieren
 
Hallo!

Wenn´s geht, kann man sich ja auch mit Auffüllen der Zahlen mit 0 bis zu einer bestimmten Länge behelfen (also wird aus 4 z.B. 0004, aus 55 0055). Ist natürlich nicht so elegant, am besten ist es, eine Vergleichsroutine zu schreiben, die alle Eigenschaften der einzelnen Elemente vergleicht und entscheidet, ob nun getauscht werden soll oder nicht.

Cu,
Udontknow

shmia 4. Jan 2007 15:50

Re: Array Sortieren
 
Entscheidend ist ja die Vergleichsfunktion.
Schau mal hier: http://www.delphipraxis.net/internal...ct.php?t=34594

Kuehter 14. Okt 2014 15:00

AW: Array Sortieren
 
ich habe mal eine frage die eher kontraproduktiv hierzu ist aber auch was mit sortieren zu tun hat

ich habe ein array das schon sortiert ist aber das will ich gar nicht ich will das es einfach bunt angeordnet wird wenn ich das ausführe die sortierung soll der spieler machen

so wie bei solitär wenn die karten gegeben werden sind die ja auch alle durcheinander

DeddyH 14. Okt 2014 15:02

AW: Array Sortieren
 
Vertausch doch jedes Element per Schleife mit einem zufällig gewählten anderen, das scheint mir die einfachste Lösung zu sein.

Kuehter 14. Okt 2014 15:05

AW: Array Sortieren
 
aber wie kann ich das dann verhindern das der ein element 2 mal nimmt weil doppelnennung ist dabei tötlich

DeddyH 14. Okt 2014 15:10

AW: Array Sortieren
 
Wie meinen?

gammatester 14. Okt 2014 15:11

AW: Array Sortieren
 
Fisher-Yates-Shuffle

Kuehter 14. Okt 2014 15:12

AW: Array Sortieren
 
ja wenn ich das sortierte zerstören möchte und ich lasse das per random drucheinander bringen habe ich das problem das zahlen auch 2 mal genannt werden können und in delphi weiß ich leider nicht wie man das sonst machen soll weil mein wissen auf der sprache lässt noch zu wünschen übrig

Kuehter 14. Okt 2014 15:15

AW: Array Sortieren
 
danke gamma tester den link weiß jetzt wie ich das programmiere

DeddyH 14. Okt 2014 15:16

AW: Array Sortieren
 
Nochmal zum Mitschreiben: Du hast ein Array of z.B. Integer, welches derzeit sortiert ist, richtig? Kommen dort Zahlen mehrfach vor? Und wenn ja, wo liegt das Problem, wenn dies dann in der zufälligen Reihenfolge auch mehrfach vorhanden sind? Also z.B. vorher
Code:
1
2
2
3
4
und nachher
Code:
2
3
1
2
4

himitsu 14. Okt 2014 15:31

AW: Array Sortieren
 
Was ist die Umkehrung vom "Sortieren"? :stupid:

Hier im Forum suchenarray mischen / Bei Google suchendelphi array mischen
Hier im Forum suchenliste mischen / Bei Google suchendelphi liste mischen

Sir Rufo 14. Okt 2014 16:00

AW: Array Sortieren
 
Der Fisher-Yates ist auf jeden Fall zu bevorzugen.

Auf der Wikipedia Seite macht der zweite Code aber einen Schritt zuviel (unnötig)

Statt wie dort geschrieben
Code:
To shuffle an array a of n elements (indices 0..n-1):
  for i from 0 to n - 1 do
       j <- random integer with i <= j < n
       exchange a[j] and a[i]
braucht man nur bis
Delphi-Quellcode:
n - 2
zu iterieren
Code:
To shuffle an array a of n elements (indices 0..n-1):
  for i from 0 to n - 2 do
       j <- random integer with i <= j < n
       exchange a[j] and a[i]
Beim ersten Beispiel mit
Delphi-Quellcode:
downto
wird das korrekt gemacht
Delphi-Quellcode:
for i from n - 1 downto 1
:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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