-2 java loops for-loop while-loop object-oriented-analysis
在while循环中改变条件的顺序会使程序崩溃.如果我这样写:while(a[in-1]>=temp && in>0),该程序不会工作.为什么?错误是:ArrayIndexOutOfBoundsException:-1.以下代码有效,直到我进行上述更改.
public class ISort {
public int[] sort(int[] a){
int n=a.length;
for(int out=1;out<n;out++){
int temp=a[out];
int in=out;
while(in>0 && a[in-1]>=temp ){
a[in]=a[in-1];
in--;
}
a[in]=temp;
}
return a;
}
public static void main(String[] args){
int[] a={3,2,1,6,3,8,8,10,9};
ISort s=new ISort();
int[] res=s.sort(a);
for(int i=0;i<res.length;i++ ){
System.out.print(" "+res[i]+" ");
}
}
}
Run Code Online (Sandbox Code Playgroud)