ran*_*ech 3 java arrays sorting recursion bubble-sort
我正在尝试用Java编写一个Recursive Bubble排序,我正在获得Index Out of Bounds Exception.我做错了什么,为什么我会收到这个错误?这是我的代码:
public static <T extends Comparable< ? super T>>
void sort(T [] a){
T tmp;
for(int i=0;i<a.length;i++){
if(a[i].compareTo(a[i+1])>0){
tmp = a[i];
a[i]=a[i+1];
a[i+1]=tmp;
sort(a);
}
System.out.println("i:"+i+" "+a[i]);
}
Run Code Online (Sandbox Code Playgroud)
此外,即使它对数组进行排序,我最后得到错误,它正在打印所有步骤,如何让它打印最后一个最终排序的数组?可能是一个简单的答案,但我的大脑现在被炒了,不能直接思考.提前致谢.
Ósc*_*pez 10
循环应该停止时i < a.length-1
,因为在您的代码中您访问该位置i+1
,i == a.length - 1
然后i+1
将尝试访问不存在的数组末尾的元素 - 因此,超出范围.