Kann mir jemand folgenden Code erklären?
Hallo Leute,
in der Schule habe ich die Aufgabe bekomme, aus einer Liste, das größte und zweit größte Element raus zu picken. Im Internet habe ich hierfür eine Lösung gefunden, die funktioniert. Doch verstehen tu ich die Lösung nicht hundert Prozent. Ich verstehe nicht wie max und secondmax die Werte bekommen und die einzelnen Werte aus der Liste gefiltert werden.
// Ausgabe 3
int[]array={3,1,5,7,4,12,3,8,-2};
// Ausgabe 3
public static void sortiereElement(int[] array){
int max = 0;
int secondmax = 0;
for(int i=0; i<array.length; i++){
if(array[i] > max){
secondmax = max;
max = array[i];
}else if(array[i] > secondmax){
secondmax = array[i];
}
}
// Ausgabe
System.out.print("Aufgabe 3:" + "\t" + "\n");
System.out.print("Größtes Element: " + max + "\t" + "\n");
System.out.print("Zweitgrößtes Element: " + secondmax + "\t" + "\n");
}
--------------------------------------------------------------------
Ausgabe:
Aufgabe 3:
Größtes Element: 12
Zweitgrößtes Element: 8
keine gute idee , bei nur minus werten (oder nur 1 wert , oder 1 positiven und einem negativen) wid da gar nichts gefunden und beide (bzw 1 wert) werte bleiben 0
Was würdest du dann empfehlen?
1 Antwort
es wird das array durchgegangen
startwerte für max und secondmax sind 0
wenn das element größer max ist, dann wird max ja überschrieben , deswegen muss man max dann in secondmax packen . und danach max mit dem element überschreiben
wenn es aber nicht größer max ist, prüft man ob es größer secondmax ist und ist dem so überschreibt man secondmax .
hat ein nachteil, wenn es nur 1 element gibt . oder bei negativen elementen passiert gar nichts , wenn nicht genug positive elemente da sind.
den (-2,-1) führt zu
max = 0
secondmax = 0