sortiert nur den positiven Wert und bleibt der negative Wert mit seinem Index wie bei einem Array

8

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%     
Sumon Bappi 10.07.2017, 19:48
quelle

6 Antworten

6

In der zweiten Schleife müssen Sie für jedes inputArray[j] vor dem Vergleich das nächste Element finden, das größer als 0 ist.

%Vor%     
Dij 10.07.2017, 19:58
quelle
7

Versuchen Sie Folgendes:

  1. Extrahiere nur die positiven Werte
  2. Sortiere sie mit Collections.sort (oder Array.sort )
  3. Gehe durch das ursprüngliche Array und ersetze die positiven Werte durch die geordneten
Jean Logeart 10.07.2017 19:51
quelle
5

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.

%Vor%

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%     
Andreas 10.07.2017 20:11
quelle
3
%Vor%

Dies extrahiert alle positiven Werte aus dem Array int , sortiert sie und ersetzt die positiven Werte nacheinander.

    
17slim 10.07.2017 19:59
quelle
3

Was @ Jean-Logeart in Code übersetzt hat:

%Vor%

Das Ausführen mit dem main () in der Frage erzeugt:

%Vor%     
Brian Risk 10.07.2017 20:10
quelle
2

Wie wäre es mit einem Ersatz an dieser Stelle?

%Vor%     
Eugene 11.07.2017 09:17
quelle

Tags und Links