public class InsertSorter implements Sorter {
    
    @Override
    public void sort(Element[] elements) {
 
        for(int i = 1; i < elements.length; i++){
            Element key = elements[i];
            int end = i - 1;
            while((end >= 0) && (key < elements[end])){
                elements[end + 1] = elements[end];
                end--;
            }
            elements[end] = key;
        }
    }
}

解决方案 »

  1.   

    因为Element没有实现Comparable接口
      

  2.   

    好的,谢谢,我这样改了:elements[end].compareTo(key) > 0,但我还是不是很清楚,比如Integer它实现了Comparable接口,就可以直接使用>、<这些运算符了吗?Element没有实现Comparable接口也可以调用它的comparaTo()方法吗?Integer类型的数进行比较不应该是调用comparaTo()方法吗?还有就是测试,我这样写,提示data的类型是错的:
    int[] data = new int[]{4,2,61,7,0};
    new InsertSorter().sort(data);
      

  3.   

    你的sort传入的是Element[] elements 数组,你的int[] data = new int[]{4,2,61,7,0};  是int[]数组,类型不一致的。
      

  4.   


    你到底想干么? element 数组是一个树数组,内包含父指针,子指针,和值,当然不能直接比较咯,你data是一个int数组是线性数组,当然不能直接传入element数组中,你先要理解数据的类型。