堆排序实现错误,具有insert函数

时间:2017-05-01 08:07:45

标签: java debugging heap heapsort

我需要用堆排序实现一些东西,而且我有一个bug。

在Heap类中:

private serial[] data;
private int size;
private static final int FRONT = 1;
public Heap(){
    serial[] data = new serial[1000]; //serial - object with a String
    this.size = 0;
    data[0] = new serial("");
}

public void insert(serial t){
    size++;
    data[size] = t; **<--- Null Pointer EXCEPTION** 
    int current = size;
    while(data[current].serialNumber() > data[parent(current)].serialNumber()){
        swap(parent(current), current);
        current = parent(current);
    }
}

(当然还有更多函数用于堆实现)。 和主要班级:

public class Simulation {

public static void main(String[] args) {
    Heap maxHeap = new Heap();
    maxHeap.insert(new serial("a"));
    maxHeap.insert(new serial("ba"));
    maxHeap.print();

}

}

(我插入字符串并根据数字返回一个排序数组) 我运行程序,它返回一个空指针异常(对于插入函数,它写在代码中)。

出于某种原因,它说:(在Heap类中)

private serial[] data;

从未使用过。

1 个答案:

答案 0 :(得分:1)

在堆构造函数中,我再次初始化了实例变量。

感谢Seelenvirtuose