Java - 这种排序方法很神秘

时间:2011-05-20 11:40:54

标签: java sorting methods

我坚持使用下面的代码,它应该将一个键/指针组合插入到数据结构的节点中并将其保持在排序顺序中,但是顺序似乎是随机的,我只是想知道什么是错误的!

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;
}

1 个答案:

答案 0 :(得分:4)

一个问题是,如果val大于所有当前值,则最终会得到maxval = 0。您可以通过将maxval初始化为values.length - 1来开始,或许......

来解决此问题

另一个问题是你实际上正在失去values[values.length - 1]的原始值 - 它被之前的值覆盖了,但没有任何东西在其他地方复制该值。这里有什么理想的行为?