java - Java 中的递归冒泡排序

标签 java arrays sorting recursion bubble-sort

我正在尝试用 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/

相关文章:

比较 volatile 数组和非 volatile 数组

Java 8 流 : Count the occurrence of elements(List<String> list1) from list of text data(List<String> list2)

arrays - 在最佳情况下对 25 个元素的数组进行冒泡排序

java - 显示数组中包含的值

java - LDAP/Java 身份验证 : How to specify workstation?

java - 用索引排序效率高吗

mongodb - 排序优先级

java - 时间正则表达式问题

Java 链表 : How to add a Pixel in a Picture

arrays - 字符串文字的 Ada 常量数组