堆排序实现bug,带有insert函数
heap sort implementation bug, with the insert function
我需要用堆排序实现一些东西,但我有一个错误。
在堆中class:
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);
}
}
(当然还有更多用于堆实现的函数)。
和主要 class:
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();
}
}
(我插入字符串和 return 基于数字的排序数组)
我运行这个程序,return是一个Null Pointer Exception(给insert函数,在代码where里写的)。
出于某种原因,它说:(在堆中 class)
private serial[] data;
从未使用过。
在堆构造函数中我再次初始化了实例变量。
感谢 Seelenvirtuose
我需要用堆排序实现一些东西,但我有一个错误。
在堆中class:
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);
}
}
(当然还有更多用于堆实现的函数)。 和主要 class:
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();
}
}
(我插入字符串和 return 基于数字的排序数组) 我运行这个程序,return是一个Null Pointer Exception(给insert函数,在代码where里写的)。
出于某种原因,它说:(在堆中 class)
private serial[] data;
从未使用过。
在堆构造函数中我再次初始化了实例变量。
感谢 Seelenvirtuose