Die drei größten Werte eines Arrays

Mr.GreenTea

Mitglied
Hallo alle zusammen 🙂

Wir fangen gerade mit Java an und bearbeiten ein paar Aufgaben bezüglich der Arrays.

Wir haben einen 10-stelligen Array vom Typen einer Klasse.

[Java]
public class BereichsUmsatz
{
private String bereich;
private double umsatz;

public BereichsUmsatz(String bereich, double umsatz)
{
setbereich(bereich);
setumsatz(umsatz);
}

public void setbereich(String bereich)
{
this.bereich = bereich;
}

public void setumsatz(double umsatz)
{
this.umsatz = umsatz;
}

public String getbereich()
{
return bereich;
}

public double getumsatz()
{
return umsatz;
}


}
[/Java]

Unsere Aufgabe ist es nun, eine Methode zu implementieren, die die drei größten Umsatzwerte an die ersten drei Stellen des Arrays setzt. Sollten noch weitere Stellen im Array existieren, die den selben Wert wie der 3t-größte Umsatz haben, sollen die auch noch an Platz 4, 5... etc positioniert werden.

Ich habe bereits eine Methode, um den größten Wert, eine Methode, um den kleinsten Wert zu ermitteln und eine Methode um beliebige Stellen im Array zu vertauschen.

Ich brauch keine vollständige Lösung. Ich will nur n Tipp, wie ich auf die 2t-größte und die 3t-größte Zahl komme. Und das eigentlich ohne meine Methode zur Ermittlung des größten Wertes verändern zu müssen.
 
Hi,

das klingt eher nach eine Aufgabe für einen simplen Sortieralgorithmus (zB. Bubblesort) den du optional ab Durchlauf 4 der äußeren Schleife abbrichst, wenn keine dem 3. Umsatz identischen Werte mehr im Array vorhanden sind oder so ähnlich.
 
Hmmm, beim Bubblesort weist du aber nicht, wann die drei größten Werte an erster Stelle stehn.
Er durchläuft einfach den Array immer wieder, bis alles seine Ordnung hat. Das geht unter Java auch mit diesem Arrays.sort().

Ich brauche eigentlich nur einen Ansatz, um einen zweit größten Wert bzw. einen dritt größten Wert in einem Array zu finden.

Sollte das zu umständlich sein, werd ich den Array einfach komplett sortieren.

Aber Danke 🙂
 
Bubblesort schiebt dir nach dem ersten kompletten Durchlauf, den größten Wert an die erste Stelle.
Danach macht es mit Stelle 2 weiter. Dann mit 3 etc pp.
Das kannst du dann abbrechen wenn sich kein Wert mehr identisch zur 3. Stelle im Array befindet
 
Sagen wir, mein gößter Umsatz liegt an 5ter Position. Dann liegt dieser Umsatz nach dem ersten Durchgang des Bubblesorts an 4ter Position... nicht an der 1ten.
 
Sagen wir, mein gößter Umsatz liegt an 5ter Position. Dann liegt dieser Umsatz nach dem ersten Durchgang des Bubblesorts an 4ter Position... nicht an der 1ten.

Das ist so nicht korrekt, diggaa1984 hat da schon recht:
Bubblesort ? Wikipedia

Nach dem ersten Durchlauf befindet sich der größte Umsatz dann an der letzten Stelle im Array, nach dem dritten dann entsprechend die 3 größten Umsätze an den letzten Stellen.
 

Zurück
Oben