public void add (int val, Node no) {
// Find the index where to insert
int maxval = 0;
for (int o = 0; o < this.values.length; o++)
if (val < this.values[o]) {
maxval = o;
break;
}
// Move all the data from the chosen index one spot forward
for (int o = this.values.length-1; o > maxval; o--) {
this.values[o] = this.values[o-1];
this.children[o] = this.children[o-1];
}
// Insert the value
this.children[maxval] = no;
this.values[maxval] = val;
}
答案 0 :(得分:4)
一个问题是,如果val
大于所有当前值,则最终会得到maxval = 0
。您可以通过将maxval
初始化为values.length - 1
来开始,或许......
另一个问题是你实际上正在失去values[values.length - 1]
的原始值 - 它被之前的值覆盖了,但没有任何东西在其他地方复制该值。这里有什么理想的行为?