2016-03-23 18 views
-2

Ich habe eine Aufgabe in der Universität, wo ich Student nach ihren IDs mit sortieren nach Index sortieren müssen, nachdem sie nach ihrer Gruppennummer mit Bubble Sortierung sortiert wurden. Meine Sortiermethode sortiert überhaupt nichts. Ich habe eine Student-Klasse mit den erforderlichen Daten, Sortings-Klasse mit Student-Typ-Array erstellt. Und ich habe statische Methode für diese Art der Sortierung in der Hauptklasse, wo ich eine Instanz von Sortierungen erstellen und meine statischen Methoden zum Sortieren aufrufen.Sortieren nach Index in Java

public static void index_Sort(Student[]st, int []a) 
{ 
    int temp; 
    for(int k = 0; k < a.length; k++) 
    { 
     for(int i = k+1; i < a.length; i++) 
     { 
      if(st[a[k]].get_ID() > st[a[i]].get_ID()) 
      { 
       temp = a[k]; 
       a[k] = a[i]; 
       a[i] = temp; 
      } 
     } 
    } 
} 

Hauptklasse

int index[] = {0,1,2,3,4,5}; 
    Student s_arr[] = new Student[6]; 
    s_arr[0] = st; //s_arr.add(st) 
    s_arr[1] = st1; 
    s_arr[2] = st2; 
    s_arr[3] = st3; 
    s_arr[4] = st4; 
    s_arr[5] = st5; 

    System.out.println("__________SORT BY INDEX __________"); 
    index_Sort(new_sort.st,index); 
+1

Haben Sie versucht, durch den Code in Debugger Schritt, ändern sich die Variablenwerte beobachten? Dies ist der Weg zu verstehen, was passiert –

+1

Sie ordnen nicht Ihre Studenten-Array ('Student [] st'), Sie ordnen Ihre int-Array (' int [] a'). – Berger

+0

Ihre Methoden sortieren derzeit nach ID in absteigender Reihenfolge (id [k]> id [i] mit k> i), sicher, dass Sie das wollen? Abgesehen davon, wie Berger bereits bemerkt hat, sortiert man "index", also schaut man sich vielleicht das falsche Array an. – Thomas

Antwort

1

Sie sind nicht das Studenten Array-Objekt zu sortieren.

Sie sortieren das int-Array 'a'.

public static void index_Sort(Student[]st) 
{ 
Student temp; 
int len = st.length; 
for(int k = 0; k < len -1 ; k++) 
{ 
    for(int i = k+1; i < len ; i++) 
    { 
     if(st[k].get_ID() > st[i].get_ID()) 
     { 
      temp = st[k]; 
      st[k] = st[i]; 
      st[i] = temp; 
     } 
    } 
} 
} 

Hauptklasse:

Student s_arr[] = new Student[6]; 
s_arr[0] = st; //s_arr.add(st) 
s_arr[1] = st1; 
s_arr[2] = st2; 
s_arr[3] = st3; 
s_arr[4] = st4; 
s_arr[5] = st5; 

System.out.println("__________SORT BY INDEX __________"); 
index_Sort(s_arr);