我坚持使用以下代码,它应该将键/指针组合插入到数据结构的节点中,并按排序顺序保存它,但顺序似乎是随机的,我只是无法弄清楚出了什么问题!
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;
}
最佳答案
一个问题是,如果 val
大于所有 当前值,您最终会得到 maxval = 0
。您可以通过将 maxval
初始化为 values.length - 1
来解决此问题,也许...
另一个问题是您正在有效地丢失 values[values.length - 1]
的原始值 - 它被较早的值覆盖,但没有任何东西可以将该值复制到其他地方。这里期望的行为是什么?
关于Java - 这种排序方法是个谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071385/