Обзор
Сортировка пузырьков - это простой алгоритм сортировки. Он неоднократно посещает последовательность, которая будет сортироваться, сравнивает два элемента за раз и меняет их, если они неверны. Работа по посещению последовательности повторяется до тех пор, пока последовательность не будет отсортирована. Происхождение этого алгоритма заключается в том, что тем меньше элемент будет медленно «плавать» до начала последовательности через обмен.
Проще говоря, это:
Сортировка пузырьков - это больше, чем более крупные персонажи, тонущие за массивом (можно понять, как ниже), а более мелкие персонажи плавают впереди (выше).
Интуитивно понятная диаграмма интерпретации:
шаг
Сравните соседние элементы. Если первый больше, чем второй, обменяйте их на двоих.
Сделайте ту же работу для каждой пары соседних элементов, начиная с первой пары до последней пары в конце. На этом этапе последний элемент должен быть самым большим числом.
Повторите вышеуказанные шаги для всех элементов, кроме последнего.
Продолжайте повторять вышеуказанные шаги для меньшего количества и меньшего количества элементов каждый раз, пока не нужно сравнивать пары чисел.
Пример
Необработанные данные:
3 5 2 6 2
Первый раунд
Сравнение 3 и 5, 5 больше 3, без обмена 3 5 2 6 2 Продолжить сравнение 5 и 2, 5 больше 2, обменная позиция 3 2 5 6 2 Продолжить сравнение 5 и 6, 6 - больше 5, без обмена 3 2 5 6 2 Продолжайте сравнивать 6 и 2, 6, превышает 2, обменное положение 3 2 5 2 66 погружается до конца, оба 2 поднимаются вверх (спереди) соответственно.
Раунд 2
Сравнение 3 и 2, 3 превышает 2, обменное положение 2 3 5 2 6 Сравнение 3 и 5, 5, превышает 3, без обмена 2 3 5 2 Сравнение 5 и 2, 5 больше 2, обменное положение 2 3 2 5 6 не нужно сравнить 5 и 6
Третий раунд
Сравнение 2 и 3, 3 больше 2, нет необходимости обменять 2 3 2 5 6 Сравнение 3 и 2, 3 больше, чем 2, нет необходимости сравнивать обменную позицию 2 2 3 5 6
Раунд 4
Сравните 2 и 2 без обмена 2 2 3 5 6
Четыре раунда заканчиваются
2 2 3 5 6
Реализация кода (Java)
пакет com.coder4j.main.arithmetic.sorting; Публичный пузырь класса { / ** * Bubble Sort * * @param Array * @return * / public static int [] sort (int [] array) {int temp; // Первый цикл слоя показывает количество сравниваемых раундов, таких как элементы длины, и количество сравниваемых раундов - длина 1 (нет необходимости сравнивать с самим собой) для (int i = 0; i <array.length - 1; i ++) {System.out.println («Thread» + (i + 1) + «начало колеса колеса»); // Второй слой петли, каждое прилегающее два сравнения уменьшается один раз, а количество раз уменьшается с увеличением количества раундов. Каждый раунд определяет самый большой, и нет необходимости сравнивать самый большой для (int j = 0; j <массив. массив [j] = массив [j + 1]; массив [j + 1] = temp; } System.out.println ("th" + (i + 1) + "Round," th " + (j + 1) +" compare: "); for (int k: array) {system.out.print (k +" ");} system.out.println ();} system.out.println (" result: "); для (int k: rust.tys.tys. } System.out.println ();Результаты результатов вывода теста:
2 3 5 5 6 6 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 6 3 3 3 5 3 3 3 5 6 3 3 5 6 4 3 3 5 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 НЕТ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 НЕТ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 окончательный результат 2 2 3 5 6
После тестирования это согласуется с результатами в примере.