Nano Hash - криптовалюты, майнинг, программирование

Функция пузырьковой сортировки не сортирует заданный массив

Итак, в основном, я настроил алгоритм пузырьковой сортировки, и, как ни странно, он не возвращает отсортированный массив, а только несортированный массив.

данный массив;

int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };

Алгоритм пузырьковой сортировки;

public static int[] sort_array(int[] array) {

    int [] sorted = array;
    int temp = 0;

    for (int i = 0; i < sorted.length - 1; i++) {
        for (int j = 0; i < sorted.length - i - 1; i++) {
            if (sorted[j] > sorted[j + 1]) {
                temp = sorted[j];
                sorted[j] = sorted[j + 1];
                sorted[j + 1] = temp;
            }
        }
    }
    return sorted;
}

Также сделал метод возврата массива;

public static void return_list(int[] array) {

    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]);
    }
}

После использования методов он просто возвращает мне несортированный массив.

int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };

sort_array(array);

return_list(array);

Выход = 20, 5, 1, 6, 23, 52, 15, 12;

01.06.2018

Ответы:


1

Дублирование массива (при условии, что вы хотите сохранить исходный)

Во-первых, вы не копируете array в sorted здесь. Вы копируете ссылку на массив в отсортированный, поэтому любое изменение содержимого sorted также будет видно в array

int [] sorted = array;

Сделайте это, чтобы создать новый массив sorted и скопировать в него содержимое из array: Создать копию массива

Есть несколько способов (Arrays.copyOf, clone и т. д.) для копирования массива. Например:

int[] sorted = Arrays.copyOf(array, array.length);

Ошибка сортировки

Кроме того, похоже, что в ваших циклах for может быть ошибка. Вы не повторяете j в этой строке

for (int j = 0; i < sorted.length - i - 1; i++)

Итак, причина, по которой вы получаете несортированный массив, заключается в том, что массив не сортируется правильно.

01.06.2018

2

Вы проверяете значение i каждый раз, а также увеличиваете его значение на каждой итерации

for (int j = 0; i < sorted.length - i - 1; i++)
01.06.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..