我目前一直在学习插入排序,并想出了这段代码:
public int[] Sort(int a[]){
for(int i=1;i<a.length;i++){
int term=a[i];
int j=i-1;
//Sorting
while(j>=0 && term<a[j]){
a[j+1]=a[j];
j--;
}
a[j]=term;
}
return a;
}
但是当我执行此代码时,它会显示ArrayIndexOutofBoundsException
。
如果我错了,请指导我。
答案 0 :(得分:2)
读取堆栈跟踪表明错误发生在行
上 a[j]=term;
向上看,你可以看到当j <0时,while循环结束;因此,您必须得到此错误,因为j = -1。实验表明,如果您在while和j++;
a[j]=term;
,则代码可以正常运行
答案 1 :(得分:2)
根据错误状态,它显示错误在
上a[j] = term
因此,如果仔细观察,可以看到while循环导致ArrayIndexOutofBoundsException。所以你可以写这样的代码:
public static int[] Sort(int a[]){
for(int i=1;i<a.length;i++){
int term=a[i];
int j=i-1;
//Sorting
while(j>=0 && term<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=term;
}
return a;
}