我正在尝试用 Java 编写递归冒泡排序,但遇到索引越界异常。我做错了什么,为什么会出现此错误? 这是我的代码:
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]);
}
此外,即使它对数组进行排序,但我在最后得到错误,它正在打印所有步骤,我如何让它打印最后一个最终排序的数组? 可能是一个简单的答案,但我的大脑现在已经炸了,无法直接思考。 提前致谢。
最佳答案
循环应该在 i < a.length-1
时停止,因为在您的代码中您访问了位置 i+1
,当i == a.length - 1
然后 i+1
将尝试访问数组末尾不存在的元素 - 因此超出范围。
关于java - Java 中的递归冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798068/