2012-01-21 29 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。第二次递减也看起来很可疑。