Ich muss das Array nur für den positiven Wert in aufsteigender Reihenfolge sortieren. Für den negativen Wert bleibt die Indexposition gleich.
Wenn das Array ist: int[] inputArray = {-1, 150, 190, 170, -1, -1, 160, 180}
.
Die Ausgabe sollte so aussehen - int[] outputArray = {-1, 150, 160, 170, -1, -1, 180, 190}
.
Aber in meinem Fall die Ausgabe
ist das - int[] outputArray = {-1, 150, 170, 190, -1, -1, 160, 180}
.
Hier ist mein Code unten:
%Vor%Versuchen Sie Folgendes:
Collections.sort
(oder Array.sort
) Sie könnten versuchen, sich selbst zu sortieren oder nur die positiven Werte zu extrahieren und sie zu sortieren, aber hier ist eine alternative Version, die das Eingabearray unverändert lässt (andernfalls würde ein neues Array aus der Methode zurückgegeben) unnötig sein) .
Code kopiert und sortiert das Eingabearray zuerst und führt anschließend negative Werte aus dem Eingabearray mit positiven Werten aus dem sortierten Array zusammen. Da negative Werte zuerst sortiert wurden, gibt es keine Möglichkeit, sortierte Werte als Kopien zu überschreiben.
Der Code enthält auch keine Werte, die sonst für die Erstellung eines List<Integer>
der positiven Werte erforderlich wären.
Testen
%Vor%Ausgabe
%Vor% Die Wiederverwendung von arr
als das sortierte Array aller Werte und das Ergebnisarray funktioniert, weil der positive Wert nur down kopiert wird oder dort bleibt, wo er ist.
Zur Veranschaulichung:
%Vor%Was @ Jean-Logeart in Code übersetzt hat:
%Vor%Das Ausführen mit dem main () in der Frage erzeugt:
%Vor%