Java - 这种排序方法是个谜

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

最佳答案

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

另一个问题是您正在有效地丢失 values[values.length - 1] 的原始值 - 它被较早的值覆盖,但没有任何东西可以将该值复制到其他地方。这里期望的行为是什么?

关于Java - 这种排序方法是个谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071385/

相关文章:

python - 帮助 Python 方法中的内部循环

java - 如何使用java打印进程的Heap位置?

java - MyBatis 批量插入/更新 Oracle

java - Hibernate查询语言: Getting a SQL Syntax Error for my Query

sorting - 在 Haskell 中解释这个 'Merge' 函数

javascript - 如何使用变量而不是字符串按 Mongoose 上的数组索引排序?

java在方法中返回数组

java - 如何使用ormlite通过ids集合删除记录

matlab - 在matlab上绘制矩阵的点

c - 在 Objective C 中声明方法的参数时出错