插入排序功能

时间:2015-02-24 00:21:04

标签: java sorting insertion-sort

这个插入排序函数应该接受一个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;
    }

}

2 个答案:

答案 0 :(得分:1)

为什么不在Drink类中实现类似的界面?

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

答案 1 :(得分:1)

当count等于-1时,您正在尝试访问drink [1]的getcost方法。我相信如果您将“while count&gt; = -1”更改为“while count&gt; -1”,这将得到修复。

这显然需要进行少量重组,然后将饮料插入正确的地方。