2016-03-23 11 views
-2

大学で、ID番号を使用して学生を分類するタスクがあります。グループ番号でを並べ替えた後、バブルソートを使用して並べ替えます。私のソート方法では何も並べ替えられません。 私は必要なデータを持つStudentクラス、Student型配列を持つSortingsクラスを作成しました。そして私は、ソートのインスタンスを作成し、ソートのための静的メソッドを呼び出すメインクラスで、このタイプのソートのための静的メソッドを持っています。インデックスで並べ替え

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; 
      } 
     } 
    } 
} 

メインクラス

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

あなたは、変数の値が変更見て、デバッガでコードをステップ実行しようとしたことがありますか?これは何が起こっているのかを理解する方法です。 –

+1

あなたはStudents配列( 'Student [] st')を並べ替えていないので、あなたはint配列(' int [] a')を並べ替えています。 – Berger

+0

あなたのメソッドは現在、idによって降順にソートされています(id [k]> id [i]、k> i)。それだけでなく、Bergerがすでに指摘しているように、あなたは 'index'をソートしているので、間違った配列を見ているかもしれません。 – Thomas

答えて

1

あなたが学生の配列オブジェクトのソートされていません。

int配列 '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; 
     } 
    } 
} 
} 

メインクラス:

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); 
関連する問題