Функция сортировки с использованием Java - PullRequest
1 голос
/ 21 января 2012

Я пишу Java-приложение.

  ArrayList<int[]> list = new ArrayList<int[]>();

  double[] array = new double[10];  

Я написал функцию для сортировки массива и списка сортировки на основе сортировки массива. Но моя функция работает неправильно.

  public void sort() {
    int n = array.length;
    for (int i = 1; i < n; i++) {
        double m = array[i];
        int[] d = list.get(i);
        int j = i - 1;
        while ((j >= 0) && (array[j] > m))
        {
            array[j+1] = array[j--];
            list.set(j+1, list.get(j--));
        }
        array[j+1]=m;
        list.set(j+1, d);
    }
}

В строке java.lang.ArrayIndexOutOfBoundsException:

          list.set(j+1, list.get(j--));

Как решить проблему и отсортировать список по типу массива?

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Когда i==1, j изначально равно 0.

Предполагая array[0] > array[1], вводится блок if и после:

array[j+1] = array[j--];

j == -1, поэтому вы не можете использовать его для индексации list. Второй декрет тоже выглядит подозрительно.

0 голосов
/ 21 января 2012

Я думаю, что в этой ссылке есть все, что вам нужно: http://www.leepoint.net/notes-java/data/arrays/70sorting.html

В основном для сортировки массива вы будете использовать метод сортировки java.util.Arrays, а для ArrayList вы будете использовать java.util.Collections.метод сортировки.

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