Java - этот метод сортировки является загадкой - PullRequest
1 голос
/ 20 мая 2011

я застрял со следующим кодом, он должен вставить комбинацию ключ / указатель в узел данных и сохранить его в отсортированном порядке, однако порядок кажется случайным, и я просто не могу понять, что не так!

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 Ответ

4 голосов
/ 20 мая 2011

Ну, одна проблема в том, что если val больше всех текущих значений, вы получите maxval = 0.Вы можете исправить это, инициализируя maxval в values.length - 1 для начала, возможно ...

Другая проблема заключается в том, что вы фактически теряете исходное значение values[values.length - 1] - оно перезаписывается с более раннимзначение, но ничто не копирует это значение в другом месте.Какое здесь желаемое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...