Variablen nach Größe sortieren
Hi zusammen!
Ich habe 6 Variablen, a-f, diese enthalten ganze Zahlen von 0-999. Zwei Variablen können den gleichen Wert haben.
Wie kann ich die Variablan nach Größe sortieren? Mir fällt als Lösungsansatz nur ein, eine nach der anderen mit allen zu vergleichen. aber das ist natürlich megaumständlich...
Gibt es einen eleganteren Lösungsansatz?
Beispiel:
a=1 b=10 c=10 d=300 e=500 f=700
Nun soll eine "Platzierung" (wie bei einem Wettbewerb) errechnet werden:
fplatz=1
eplatz=2
dplatz=3
cplatz=4
bplatz=4 (haben ja beide gleiche Punktzahl)
aplatz=5
Hat jemand einen Tipp?
LG
Tobi
Ich habe 6 Variablen, a-f, diese enthalten ganze Zahlen von 0-999. Zwei Variablen können den gleichen Wert haben.
Wie kann ich die Variablan nach Größe sortieren? Mir fällt als Lösungsansatz nur ein, eine nach der anderen mit allen zu vergleichen. aber das ist natürlich megaumständlich...
Gibt es einen eleganteren Lösungsansatz?
Beispiel:
a=1 b=10 c=10 d=300 e=500 f=700
Nun soll eine "Platzierung" (wie bei einem Wettbewerb) errechnet werden:
fplatz=1
eplatz=2
dplatz=3
cplatz=4
bplatz=4 (haben ja beide gleiche Punktzahl)
aplatz=5
Hat jemand einen Tipp?
LG
Tobi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109573
Url: https://administrator.de/contentid/109573
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
3 Kommentare
Neuester Kommentar
funktion quicksort(links, rechts)
falls links < rechts dann
teiler := teile(links, rechts)
quicksort(links, teiler-1)
quicksort(teiler+1, rechts)
ende
ende
Die folgende Implementierung der Funktion teile teilt das Feld so, dass sich das Pivotelement an seiner endgültigen Position befindet und alle kleineren Elemente davor stehen, während alle größeren danach kommen:
funktion teile(links, rechts)
i := links
// Starte mit j links vom Pivotelement
j := rechts - 1
pivot := daten[rechts]
wiederhole
// Suche von links ein Element, welches größer als das Pivotelement ist
wiederhole solange daten[i] ≤ pivot und i < rechts
i := i + 1
ende
// Suche von rechts ein Element, welches kleiner als das Pivotelement ist
wiederhole solange daten[j] ≥ pivot und j > links
j := j - 1
ende
falls i < j dann tausche daten[i] mit daten[j]
solange i < j // solange i an j nicht vorbeigelaufen ist
// Tausche Pivotelement (daten[rechts]) mit neuer endgültiger Position (daten[i])
falls daten[i] > pivot
tausche daten[i] mit daten[rechts]
ende
// gib die Position des Pivotelements zurück
antworte i
ende
Hallo bufferm44!
Woher stammen denn die Werte, und wie soll die Verarbeitung nach der Rangbestimmung fortgesetzt werden?
Die Rangziffern ermitteln (wobei nach zwei 4. Rängen für die Punktzahl 10 eigentlich für 1 Punkt nur noch der 6. Rang bliebe) könntest Du zB so:
Grüße
bastla
Woher stammen denn die Werte, und wie soll die Verarbeitung nach der Rangbestimmung fortgesetzt werden?
Die Rangziffern ermitteln (wobei nach zwei 4. Rängen für die Punktzahl 10 eigentlich für 1 Punkt nur noch der 6. Rang bliebe) könntest Du zB so:
@echo off & setlocal enabledelayedexpansion
set /a Punkte1=1
set /a Punkte2=10
set /a Punkte3=10
set /a Punkte4=300
set /a Punkte5=500
set /a Punkte6=700
set /a Anzahl=6
for /L %%i in (1,1,%Anzahl%) do for /L %%j in (1,1,%Anzahl%) do if !Punkte%%i! leq !Punkte%%j! set /a Rang%%i+=1
echo Punkte Rang
for /L %%i in (1,1,%Anzahl%) do echo !Punkte%%i! !Rang%%i!
bastla