2012-01-21 36 views
1

我正在寫一個java應用程序。使用java排序函數

ArrayList<int[]> list = new ArrayList<int[]>(); 

    double[] array = new double[10]; 

我寫了一個函數,根據數組排序對數組和排序列表進行排序。 但我的功能不能正常工作。

public void sort() { 
    int n = array.length; 
    for (int i = 1; i < n; i++) { 
     double m = array[i]; 
     int[] d = list.get(i); 
     int j = i - 1; 
     while ((j >= 0) && (array[j] > m)) 
     { 
      array[j+1] = array[j--]; 
      list.set(j+1, list.get(j--)); 
     } 
     array[j+1]=m; 
     list.set(j+1, d); 
    } 
} 

它java.lang.ArrayIndexOutOfBoundsException在行:

  list.set(j+1, list.get(j--)); 

我怎樣才能解決這個問題和排序基於排序數組列表?

+0

代碼中的這行代碼在哪裏? choromosomes.set(j + 1,choromosomes.get(j--)); –

+0

錯誤來自的行不是您發佈的代碼。你可以顯示該代碼嗎? –

+0

我編輯了代碼 –

回答

2

i==1j最初是0

假設array[0] > array[1],如果輸入塊,後:

array[j+1] = array[j--]; 

j == -1,所以你不能用它來索引list。第二次遞減也看起來很可疑。