为什么我的选择排序算法中总是出现错误

时间:2019-03-09 15:44:58

标签: java sorting

因此,根据我的演讲,书籍和网上发现的内容,我的代码是正确的,但是无论我做什么,我都会遇到相同的错误。令人沮丧的是,任何帮助都很棒。

public class OrderedArrayList extends UnorderedArrayList
{

public OrderedArrayList(int size)
{
      super(size);
}

public OrderedArrayList()
{
    super();
}

    //Copy constructor
public OrderedArrayList(OrderedArrayList otherList)
{
    super(otherList);
 }

public void sort()
{// start sort
int min;
for (int i = 0; i < list.length; i++) 
{
    min = i;
    for (int j = i + 1; j < list.length; j++)
     {
        if (list[j] < list[min]) 
        {
            min = j;

        }
     }
    if (min != i)
     {
        final int temp = list[i];
        list[i] = list[min];
        list[min] = temp;
     }
    System.out.println(list[i]);//  print in ascending order  
    }


 }// end sort

}

这是错误:

 ----jGRASP exec: javac -g OrderedArrayList.java
  OrderedArrayList.java:29: error: bad operand types for binary operator '<'
        if (list[j] < list[min]) 
                    ^
  first type:  DataElement
 second type: DataElement
 OrderedArrayList.java:37: error: incompatible types: DataElement 
 cannot be converted to int
        final int temp = list[i];
                             ^
  OrderedArrayList.java:39: error: incompatible types: 
  int cannot be converted      to DataElement
        list[min] = temp;
                    ^
   3 errors

无论我为整数字符串写入哪种数据类型,每次都总是遇到相同的错误。这个实验要求它是DataElement。

1 个答案:

答案 0 :(得分:0)

这是使用DateElement而不是int的排序方法。

public void sort() {// start sort
    int min;
    for (int i = 0; i < list.length; i++) {
        min = i;
        for (int j = i + 1; j < list.length; j++) {
            if (list[j].compareTo(list[min]) < 0) {
                min = j;
            }
        }
        if (min != I) {
            final DateElement temp = list[i];
            list[i] = list[min];
            list[min] = temp;
        }
        System.out.println(list[i]);//  print in ascending order  
    }
}

请注意,我还没有检查排序本身,我只是解决了DateElement问题