我的插入排序程序有什么问题,如何修复它?

时间:2016-02-02 17:10:30

标签: java insertion-sort

在这个问题上已经开了很长时间,试图制作一个通用的InsertionSort算法。 但是,调试失败了,所以我问的是更有经验的人,我的代码出了什么问题? 贾里德。

public static<E extends Comparable<? super E>> void sort( E[] a, int i, int j ) {
    int f; 
    int x; 
    for(x = i+1; x < j; ++x) {
        E temp = a[x];
        for( f = x ;  f >= i && temp.compareTo(a[j]) > 0; --f) {
            a[f] = a[f-1]; 
        }
        a[f] = temp; 
    }    
}

1 个答案:

答案 0 :(得分:0)

在内部for循环中,您要将当前元素tempa[j]进行比较,您应该将其与之前的元素a[f-1]进行比较 改变这个

for( f = x ;  f >= i && temp.compareTo(a[j]) > 0; --f)

for( f = x ;  f >= i && temp.compareTo(a[f-1]) > 0; --f)

此外,如果i为0并且循环的条件为真,     a[f]=a[f-1]会导致ArrayIndexOutOfBoundsException,因此请使用f>i而不是f>=i