Проблемы с пузырьковой сортировкой в ​​Java

Итак, в настоящее время у меня есть эта проблема, когда я запускаю свою программу, она повторяет вторую строку дисплея. (несортированная строка)

У меня также возникают проблемы с выравниванием при запуске программы

Для чего мне нужна эта программа:

  1. Сгенерируйте 10 случайных целых чисел от 1 до 100 и поместите каждое случайное число в отдельный элемент одномерного массива, начиная с первого сгенерированного числа.

  2. Найдите наибольшее из 10 чисел и отобразите его значение.

  3. Отобразить содержимое массива в порядке первоначальной вставки чисел. Это называется несортированный список.

  4. Используя пузырьковую сортировку, теперь отсортируйте массив от наименьшего целого числа к наибольшему. Пузырьковая сортировка должна иметь собственный метод; это не может быть в основном методе.

Это то, что я запрограммировал в настоящее время. Мне просто нужна помощь в настройке, когда она запускается.

import java.util.Arrays;

public class Chpt7_Project2 {
    //Ashley Snyder
    public static void main(String[] args) {
        //create an array of 10 integers
        int[] list = new int[10];

        //initialize array of 10 random integers between 0 and 100
        for (int i = 0; i < list.length; i++) {
            list[i] = (int) (Math.random() * 100 + 1);
        }

        //Find the maximum of the list of random numbers generated
        int maximum = -1;
        int minimum = 999;

        for (int i = 0; i < list.length; i++) {
            if (maximum < list[i])
                maximum = list[i];
            if (minimum > list[i])
                minimum = list[i];
        }

        //Display the maximum from the randTen array
        System.out.println("The largest value is: " + maximum);

        //Display the unsorted list of numbers from the randTen array
        for (int i = 0; i < list.length; i++) {
            System.out.print(list[i] + "The unsorted list is: ");
        }

        //Display the sorted array numbers
        bubbleSort(list);
        System.out.println("The sorted list is: " + Arrays.toString(list) + " ");
    }

    public static void bubbleSort(int[] list) {
        //Sort randomly generated integers in randArray from lowest to highest
        int temp;
        for (int i = list.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (list[j] > list[j + 1]) {
                    temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }

person FallenAngelAsh    schedule 08.04.2021    source источник
comment
Я бы подумал об изменении вашего тега с javascript на java.   -  person FujiRoyale    schedule 08.04.2021
comment
Программа производит вывод, как и ожидалось. Вы ищете способы исправить выравнивание вывода, например, печать на отдельных строках?   -  person Justin Mathew    schedule 08.04.2021
comment
Если я могу отметить: найти 10 самых высоких чисел уже то же самое, что и отсортировать ваши числа, и распечатать последние 10, и это то, что Collections.sort с радостью сделает для вас. Кроме того, хотя это вряд ли будет полезно для домашней работы, имейте в виду, что copyOfRange существует и весьма полезен. И последнее замечание: не забудьте просмотреть свой пост, и если вы заметите какой-либо неправильный отступ, отредактируйте свой пост, чтобы убрать его. Хорошие сообщения получают хорошие ответы   -  person Mike 'Pomax' Kamermans    schedule 08.04.2021
comment
У меня проблемы с повторением второй строки и выравниванием   -  person FallenAngelAsh    schedule 08.04.2021


Ответы (1)


Вы действительно близки к тому, чтобы сделать эту работу. Обратите внимание, что System.out.print("The unsorted list is: " + list[i]); находится внутри цикла. Это означает, что несортированный список будет напечатан 10 раз. Вы, вероятно, захотите переместить часть метки вывода перед циклом, сохраняя при этом list[i] внутри цикла. Затем не забудьте поставить System.out.println после завершения цикла. Затем вы увидите, что каждый элемент сдвинут вместе. Чтобы исправить это, просто поместите list[i] + " " как часть печати.

Похоже, вы немного запутались в двух отдельных предметах. Во-первых, это запись (печать) в консоль. System.out.print("whatever"); и System.out.println("something");. Первый напишет строку текста в консоль, но не перейдет к следующей строке. Второй пишет, а затем переходит (переходит) к следующей строке.

Во-вторых, и это действительно важно, для. Всякий раз, когда вы видите for (...) { что угодно}; думайте, что что-то (что угодно) будет повторяться. Количество раз, которое он будет повторять, в основном / обычно определяется частью в скобках. То, что повторяется, находится между фигурными скобками {}.

Я думаю, это то, что вы хотите:

//Display the unsorted list of numbers from the randTen array
System.out.print("The unsorted list is: ");
for (int i = 0; i < list.length; i++) {
    System.out.print(list[i] + " ");
}
System.out.println();

Обратите внимание, что первый System.out.print не выводит на новую строку, как и второй. Второй System.output.print повторяется 10 раз. Наконец, System.out.println() запускает новую строку вывода.

person Bill    schedule 08.04.2021
comment
Я поменял местами цикл и инструкцию, чтобы читать так, как сейчас в посте... но когда я запускал программу, она все еще повторялась... - person FallenAngelAsh; 08.04.2021
comment
Изменить System.out.print(list[i] + "The unsorted list is: "); на System.out.print(list[i] + " "); - person Bill; 08.04.2021
comment
Спасибо, это остановило повторение, но как мне сделать так, чтобы числа отображались рядом с оператором с несортированным списком: ? также оператор отображения отсортированного списка находится в той же строке, что и второй... - person FallenAngelAsh; 08.04.2021