2017-02-26 2 views
0

Mein Code funktioniert gut, aber ich bin in einem Teil stecken. Ich möchte jeden Tausch drucken können, anstatt die endgültige Sortierung zu drucken. Kann mir jemand helfen ?Drucken des Arrays durch jeden Durchlauf

public class SelectionSort { 

    public static void main(String[] args) { 
     int []numbers = {10,5,7,9,1,0,4,6,11,14}; 
     numSort(numbers); 
     printArray(numbers); 
    } 
    public static int[] numSort(int[] A) { 
     for (int i = 0; i <A.length -1 ; i++) { 
      for (int j=0; j<A.length-1-i; j++) { 
       if(A[j] > A [j+1]) { 
        int temp = A[j+1]; 
        A[j+1] = A[j]; 
        A[j]=temp; 
       } 

      } 
     } 
     return A; 
    } 
    public static void printArray(int[] A) { 
     for (int i = 0; i<A.length; i++) { 
      System.out.println(A[i]); 
     } 
    } 
} 
+3

Was ist das Problem? – shmosel

+0

Ich dachte, dein Code funktioniert gut? – SaggingRufus

+2

[Warum kann "Kann mir jemand helfen?" Keine eigentliche Frage?] (Http://meta.stackoverflow.com/q/284236) – EJoshuaS

Antwort

2

Alles, was Sie tun, um das Array zu drucken, nachdem jeder Swap die printArray() Methode nach jedem Swap nennen, etwa so:

public static int[] numSort(int[] A) { 
    for (int i = 0; i <A.length -1 ; i++) { 
     for (int j=0; j<A.length-1-i; j++) { 
      if(A[j] > A [j+1]) { 
       int temp = A[j+1]; 
       A[j+1] = A[j]; 
       A[j]=temp; 
       printArray(A); 
      } 
     } 
    } 
    return A; 
} 

Allerdings macht Ihre Druckverfahren, wie es, dass es Es ist schwer zwischen aufeinanderfolgenden Arrays zu unterscheiden, weil Sie jede Nummer in einer neuen Zeile drucken. Um dies zu beheben, können Sie einfach die native Methode .toString() verwenden, oder Sie können alle Werte in derselben Zeile ausgeben, getrennt durch Leerzeichen oder Kommas, und verwenden \n oder eine leere System.out.println() am Ende, um zur nächsten Zeile zu wechseln.

+0

Ich bearbeite den Beitrag, um ein potenzielles Problem zu lösen, das der Fragesteller mit meiner haben könnte Lösung – UnknowableIneffable

+0

Danke, ich habe ein kleines Problem, die Zahlen werden vertikal statt horizontal gedruckt. Wie beheben Sie das, – Jeff

+1

Das ist, weil Sie eine neue Zeile für jede Nummer in Ihrem Array in Ihrer Druckmethode erstellen. Lesen Sie den unteren Teil meiner Antwort für die Lösung. – UnknowableIneffable

Verwandte Themen