冒泡排序:编译错误

时间:2016-01-25 00:43:30

标签: java compiler-errors bubble-sort

我尝试编写一些排序,即使我的代码中没有语法或逻辑错误,编译时我得到的异常似乎与排序方法有关:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at triBulle.bulle(triBulle.java:35)
at triBulle.main(triBulle.java:64)

这是我的代码:

public static void bulle(int[] T)
{
    int n = T.length;
    boolean echange = true ;

    while((n>0) && (echange))
    {
        echange = false ;
        for(int j = 0 ; j<n ; j++)
        {
            if(T[j] >T[j+1])
            {
                int tmp = T[j];
                T[j] = T[j+1];
                T[j+1] = tmp;
                echange = true ;
            }
        }
        n = n-1;
    }

}

感谢您查看此内容。

1 个答案:

答案 0 :(得分:1)

如果我错了,有人会纠正我,但我确信在java中,元素[0],[1]和[2]的数组的length为3.所以在你的while-loop,如果j等于length-1,那么这是最后一个索引。因此,当[j+1]被调用时,您会得到ArrayIndexOutOfBoundsException

解决问题的一种方法是

for(int j = 1 ; j<n ; j++)
    {
        if(T[j-1] >T[j])

for(int j = 0 ; j<n-1 ; j++)
    {
        if(T[j] >T[j+1])