插入排序函数

Insertion Sort Function

这个插入排序函数应该接受一组 Drink 对象,并根据它们的一个属性(成本)对它们进行排序。此 属性 由 getCost() 获取。我不断收到 NullPointer 错误。代码如下:

    public void sortDrinks(Drink[] drinks){
    for(int i = 1; i <= drinks.length; i++){
        Drink key = drinks[i];
        int count = i-1;
        while((count >= -1)&&(drinks[count].getCost() > key.getCost())){
            drinks[count+1] = drinks[count];
            count--;
        }

        drinks[count+1] = key;
    }

}

为什么不在您的 Drink class 中实现类似的接口?

public class Drink implements Comparable<Drink> {

    // attributes and constructor

    public int getCost() {
        return cost;
    }

    public int compareTo(Drink other) {
        return getCost().compareTo(other.getCost());
    }
}

稍后您可以对传递的 Drink 对象数组进行排序:

Collections.sort(drinks); // returns the sorted drinks

当count等于-1时,您正在尝试访问drinks[-1]的getcost方法。我相信如果您将 "while count >= -1" 更改为 "while count > -1".

,这将得到解决

这显然需要进行少量重组,然后才能将饮料插入正确的位置。