Kehren die beiden größten ganzen zahlen in einem array von Werten
Ich bin versucht, zurück zu den zwei größten zahlen von meiner int-array.
Ich bin in der Lage, zurückzukehren, die größte und die kleinste Ordnung, aber ich Schaffe es nicht, meinen Algorithmus zu kehren die beiden größten.
Jede Hilfe wird hier sehr geschätzt.
Bitte verzeiht mir alle Fehler in meinem code. Dies ist eine Praxis-Sitzung und die Frage wurde aus letzten Jahren exam Materials an der Universität.
Hier ist mein code:
public class TwoLargestIntsArray {
public static void main(String [] args){
int [] values = new int[5];
values[0] = 5;
values[1] = 10;
values[2] = 15;
values[3] = 20;
values[4] = 25;
System.out.println(twoLargest(values));
System.out.println();
}
public static int twoLargest(int values[]){
int largestA = values[0];
int largestB = values[0];
for(int i = 0; i < values.length; i++){
if(values[i] > largestA){
largestA = values[i];
}
if(values[i] < largestA){
largestB = values[i];
}
}
return largestA + largestB;
}
}
- das array ist eindimensional array oder n-dimensionales array?
- 1 dimensionales array
- Ich habe bereits eine Antwort geben 🙂
- Ahh danke =]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie
Arrays.toString(array)
um eine sinnvolle Ausgabe für ein array.[ 2, 1 ]
n + ceil(lg n) - 2
Vergleiche im schlimmsten Fall. Wie Ansatz, der?AUSGABE:
1 = 25
2 = 20
Können Sie nicht eine einzelne Funktion 2 Werte. Sie müssen entweder wickeln Sie Sie in ein array, oder verwenden Sie Referenz-Parameter.
Übergeben, array mit Werten gefüllt werden:
Probieren Sie es aus:
Nehme ich an, dass es Ihnen hilft, in Fall, dass Sie in der Lage sind, den größten, zweitgrößten, drittgrößten und so weiter von einer Funktion. Erstellt habe ich so eine :
Einfach das array übergeben und die largeIndex, für die größte send 1 , für die zweitgrößte senden 2 und so weiter.
Können Sie auch verschachtelte Klasse zu speichern Ergebnisse zu Ihrer it. Zum Beispiel:
Und dann Daten empfangen, so etwas wie:
Antwort von @Nilesh Jadav deckt alle Fälle ab. Antwort von @Peter Lawrey fehl in Fällen, in denen das array hat größten Wert das Letzte element ist. zum Beispiel [10,2,5,1,8,20] gibt 20 und 8 mit der akzeptierten Lösung.
Ausprobieren
NB. Wir konnte dieses astuce mit bean-Objekt der Durchführung vergleichbarer oder durch Verwendung der betreffenden benutzerdefinierte Komparator.
Wenn die Leistung ist nicht ein Problem hier, das sollte es nicht sein, auf kleinen arrays, das getan werden könnte, mit weniger code.
Die einfachste Lösung ist, einfach Sortieren Sie das array und gibt die Letzte und vorletzte Wert:
Die Zeit, die Komplexität der obige code ist O(n log (n)), wie dies in der Javadoc für
- Arrays.sort()
:Wenn die erwartete Eingabe ist ein array mit weniger als zwei Elemente, eine Fehlerbehandlung muss Hinzugefügt werden, wie das werfen einer Ausnahme.