2017-06-06 1 views
0

Dieses Programm ist für die Auflistung von 10 Studenten und ihre Noten. Dann möchte ich es mit Bubble sort sortieren. Hier tritt das Problem auf. Die Marken werden sortiert. Aber der Name ist immer noch am selben Ort. Nach dem Sortieren bleibt der Name an der gleichen Stelle und die Marken werden in aufsteigender Reihenfolge verschoben.Bubble Sorting Strings

public class StudentResult { 
    public static void main(String [] args) { 
     String names[] = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" }; 
     int marks[] = { 100, 20, 30, 40, 50, 60, 32, 80, 90, 10 }; 
     System.out.println("Students    Marks"); 
     System.out.println("____________________________"); 
     for (int i = 0; i < names.length; i++) 
      System.out.println(names[i] + "   -   " + marks[i]); 
     bubbleSort(marks, names); 
     System.out.println("\n\n\nSorted List\n\n"); 
     System.out.println("Students    Marks"); 
     System.out.println("____________________________"); 
     for(int i = 0; i < marks.length; i++) 
      System.out.println(names[i] + "   -   " + marks[i]); 
    } 

    static void bubbleSort(int[] marks, String[] names) { 
     int n = marks.length; 
     int m = names.length; 
     int temp = 0; 
     for(int i=0; i < n; i++){ 
      for(int j=1; j < (n-i); j++){ 
       if(marks[j-1] > marks[j]){ 
        //swap elements 
        temp = marks[j-1]; 
        marks[j-1] = marks[j]; 
        marks[j] = temp; 
       } 
      } 
     } 
    } 
} 
+4

schreiben eine Klasse *** Student *** mit den Attributen *** name, mark ***, nimm ein Sortierkriterium mit, benutze getters .... –

+0

Tausche Namen, wenn du Marken tauscht ... –

Antwort

0

Nur eine kleine Änderung Methode in Ihrer Blase Art machen, wie unten dargestellt:

static void bubbleSort(int[] marks, String[] names) { 
    int n = marks.length; 
    int m = names.length; 
    int temp = 0; 
    String temp1 = null; 
    for (int i = 0; i < n; i++) { 
     for (int j = 1; j < (n - i); j++) { 
      if (marks[j - 1] > marks[j]) { 
       // swap elements 
       temp = marks[j - 1]; 
       marks[j - 1] = marks[j]; 
       marks[j] = temp; 
       temp1 = names[j - 1]; 
       names[j - 1] = names[j]; 
       names[j] = temp1; 
      } 
     } 
    } 
} 

Das unten Ausgabe des Programms geben:

Students  Marks 
______________________ 
a  -  100 
b  -  20 
c  -  30 
d  -  40 
e  -  50 
f  -  60 
g  -  32 
h  -  80 
i  -  90 
j  -  10 



Sorted List 

Students  Marks 
______________________ 
j  -  10 
b  -  20 
c  -  30 
g  -  32 
d  -  40 
e  -  50 
f  -  60 
h  -  80 
i  -  90 
a  -  100 
+0

danke für die Hilfe – Tippu