Mir fiel echt keine kluge kurze Beschreibung ein.
Sache ist die:
Ich habe ein handelsübliches int array.
bspw. a={2,8,4,0,5,1}
der index, der zum jeweiligen element gehört, ist wichtig.
daher will ich ein zweites int array b bauen wie folgt:
b[0] soll als element den index des allergrößten elements aus a haben.
in a ist 8 die größte zahl, diese befindet sich an indexstelle 1, daher wird
b[0]=1 gesetzt.
b[1] wird dann den index des zweitgrößten elements enthalten.
in a ist 5 das zweitgrößte element und hat den index 4, daher ist b[1]=4.
b[2] wird den index des drittgrößten elements enthalten, usw.
ich bin mir nur gerade echt unsicher wie ich auf intelligente art und weise aus gegebenem a das array b konstruiere.
ich meine, das maximum in a zu finden ist noch easy (womit ich ja nur b[0] bekomme, aber danach bin ich überfragt.
sinn des ganzen ist einfach dass ich eine menge von sachen habe, die der reihe nach erst auf das größte element der liste angewendet sollen.
falls dort nicht machbar, dann auf das zweitgrößte, usw.
eine option, die ich sehen würde, wäre vielleicht hinzugehen, maximum von a zu suchen, dessen index an der nöäcshtfreien stelle in b einzutragen, dann (ganz wichtig) in a die stelle des maximums zu überschreiben mit -5 oder so (also in obigem beispiel die 8 durch eine -5 üpberschreiben).
rinse and repeat.
dadurch das nach "abspeichern" des maximums dieses durch eine zahl ersetzt wird die viel kleiner als alle vorkommenden zahlen ist (aufgrund der sache um die es geht weiß ich dass in der ausgangslage a nur aus zahlen >=0 besteht) ist de facto die stelle des ehemaligen maximums aus dem rennen geflogen. und in obigem beispiel würde beim nächsten suchen des maximums korrekt die 5 bzw. deren index gefunden werden.
woher wissen wir dass nciht irgendwann die -5 aufgenommen wird?
weil die for schleife, die das zu befüllende b durchgeht, so gewählt ist dass sie maximal a.length elemente einfügt.
und das erste -5 würde erst als a.length+1 tes element eingefügt werden, also nie.
die idee ist sod umm, die könnte sogar funktionieren.
Hat Jemand vielleicht eine programmiertechnisch und effizienzpraktisch schönere Idee?
Sache ist die:
Ich habe ein handelsübliches int array.
bspw. a={2,8,4,0,5,1}
der index, der zum jeweiligen element gehört, ist wichtig.
daher will ich ein zweites int array b bauen wie folgt:
b[0] soll als element den index des allergrößten elements aus a haben.
in a ist 8 die größte zahl, diese befindet sich an indexstelle 1, daher wird
b[0]=1 gesetzt.
b[1] wird dann den index des zweitgrößten elements enthalten.
in a ist 5 das zweitgrößte element und hat den index 4, daher ist b[1]=4.
b[2] wird den index des drittgrößten elements enthalten, usw.
ich bin mir nur gerade echt unsicher wie ich auf intelligente art und weise aus gegebenem a das array b konstruiere.
ich meine, das maximum in a zu finden ist noch easy (womit ich ja nur b[0] bekomme, aber danach bin ich überfragt.
sinn des ganzen ist einfach dass ich eine menge von sachen habe, die der reihe nach erst auf das größte element der liste angewendet sollen.
falls dort nicht machbar, dann auf das zweitgrößte, usw.
eine option, die ich sehen würde, wäre vielleicht hinzugehen, maximum von a zu suchen, dessen index an der nöäcshtfreien stelle in b einzutragen, dann (ganz wichtig) in a die stelle des maximums zu überschreiben mit -5 oder so (also in obigem beispiel die 8 durch eine -5 üpberschreiben).
rinse and repeat.
dadurch das nach "abspeichern" des maximums dieses durch eine zahl ersetzt wird die viel kleiner als alle vorkommenden zahlen ist (aufgrund der sache um die es geht weiß ich dass in der ausgangslage a nur aus zahlen >=0 besteht) ist de facto die stelle des ehemaligen maximums aus dem rennen geflogen. und in obigem beispiel würde beim nächsten suchen des maximums korrekt die 5 bzw. deren index gefunden werden.
woher wissen wir dass nciht irgendwann die -5 aufgenommen wird?
weil die for schleife, die das zu befüllende b durchgeht, so gewählt ist dass sie maximal a.length elemente einfügt.
und das erste -5 würde erst als a.length+1 tes element eingefügt werden, also nie.
die idee ist sod umm, die könnte sogar funktionieren.
Hat Jemand vielleicht eine programmiertechnisch und effizienzpraktisch schönere Idee?