我正在编写一个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--));
如何解决这个问题并根据数组的排序对列表进行排序?
最佳答案
当i==1
时,j
初始值为0。
假设array[0] > array[1]
,进入if block ,之后:
array[j+1] = array[j--];
j == -1
,所以你不能用它来索引list
。第二个减量看起来也很可疑。
关于java - 使用java实现排序功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953790/