Bubblesort не работает на Java, элементы не меняются местами - PullRequest
0 голосов
/ 06 мая 2019

Мой тестовый код ниже:

import java.util.Arrays;

class Scratch {
    public static void main(String[] args) {
        int[] list = {5,4,1,651,68,7,486,49,3,4,6};
        bubblesort(list);
        System.out.println(Arrays.toString(list));

    }
    private static void bubblesort(int[] a) {
        int[] list = a;
        for (int i = 0; i < list.length - 1; i++) {
            for (int j = 0; j < list.length - i - 1; j++) {
                if (list[j] > list[j + 1]) {
                    int temp = list[j];
                    list[j] = list[j + 1];
                    list[j] = temp;
                }
            }
        }
    }
}

вывод по-прежнему:

[5, 4, 1, 651, 68, 7, 486, 49, 3, 4, 6]

Я сделал несколько тестов, таких как использование return или установка другой переменной. Но ни один из моих методов не работает ...

Ответы [ 3 ]

2 голосов
/ 06 мая 2019

Вкратце, я думаю, что ваша проблема в том, что вы устанавливаете list[j] дважды подряд.

Вы должны установить list[j+1] = temp в последней строке вашего if оператора

0 голосов
/ 06 мая 2019

Замените блок if этим

if (list[j] > list[j + 1]) {
   int temp = list[j];
   list[j] = list[j + 1];
   list[j+1] = temp;
}
0 голосов
/ 06 мая 2019
int temp = list[j]; list[j] = list[j + 1]; list[j+1] = temp;

Вы назначаете значение list [j] для temp и переназначаете временное значение для list [j], поэтому никаких изменений в выходных данных нет. Так что никакого обмена там не происходит.

...