Hallo liebes Forum,
durch Auslesen der Datenbasis habe ich eine Liste mit mehreren Einträgen erhalten. Die Liste ist nicht sortiert. Unsortiert ist die Liste jedoch unbrauchbar für mich. Da ich keinen Befehl gefunden habe, wie die Liste auf direktem Wege der Größe nach sortiert werden kann, habe ich mir folgenden Workaround überlegt.
+PROG TEMPLATE urs:1
KOPF Minimum bestimmen und Liste sortieren
DEL#MIN
DEL#SUMME
DEL#lidurcheinander
STO#lidurcheinander 0.5,0.0001,20,179.9898,0.00001,179.9899
LOOP#c lidurcheinander
LOOP#b lidurcheinander
LET#SUMME 0
LOOP#a lidurcheinander
LET#licheck(#a) 1
IF #lidurcheinander(#b) <= #lidurcheinander(#a) $ wenn es 1en gibt, ist der untersuchte Eintrag nicht das Minimum
LET#licheck(#a) 0
ENDIF
LET#SUMME #SUMME+#licheck(#a) $ Summe gibt an, wie viele kleinere Zahlen es gibt
ENDLOOP
prt#SUMME
IF #SUMME == 0
LET#MIN #lidurcheinander(#b) $Minimum aus Liste
LET#INDEX #b $gibt Platz des Minimums in der Liste an
prt#MIN
prt#INDEX
ENDIF
ENDLOOP
LET#liordered(0+#c) #lidurcheinander(#INDEX)
LET#lidurcheinander(#INDEX) 200 $ Winkelliste hat Werte zwischen 0-180, Wert ist auf keinen Fall das Minimum, Löschen des Eintrags geht nicht, da ein LOOP über die Liste geschrieben ist
ENDLOOP
prt#liordered
ENDE
An und für sich funktioniert es, jedoch wird dieser Workaround bei großen Listen (> 600 Einträge) aufgrund der Verschachtelung unbrauchbar, da die Rechenzeit viel zu groß wird. Daher meine Frage: Gibt es elegantere Lösungen als die vorgeschlagene, eine Liste der Größe nach zu sortieren?
Ich freue mich sehr über Eure Antworten
Viele Grüße
Kai