Просто и классически: подробное объяснение алгоритма пузырьковой сортировки в Java
Просто и классически: подробное объяснение алгоритма пузырьковой сортировки в Java

Когда дело доходит до простых алгоритмов сортировки, пузырьковая сортировка обычно является одним из них. Хотя это не один из самых эффективных алгоритмов сортировки, его простота и легкость понимания делают его хорошей отправной точкой для изучения алгоритмов сортировки. В этой статье мы подробно рассмотрим пузырьковую сортировку в Java.

Основные принципы пузырьковой сортировки

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

  1. Начните с первого элемента из множества,Сравнивает два соседних элемента.
  2. Если предыдущий элемент больше следующего элемента (сортировать по возрастанию), поменяйте их местами.
  3. Шаг 1 и шаг 2, пока не будет пройдено все множество.
  4. На предыдущем шаге при каждом обходе самый большой элемент «всплывает» в конец множества.
  5. Повторите вышеуказанные шаги,но не включает самый большой элемент, уже отсортировать,Пока все множествосортировать не будет завершено.

-2023-08-22-0636.png

Java-реализация пузырьковой сортировки

Вот простой пример кода Java, который демонстрирует, как сортировать массив целых чисел с помощью пузырьковой сортировки:

Язык кода:javascript
копировать
public static void main(String[] args) {
    int[] arr = new int[]{5,7,4,3,6,2};
    bubbleSort(arr);
    System.out.println("пузырьсортировать Законченныймножество:"+Arrays.toString(arr));

}

public static void bubbleSort(int[] arr) {
    int n = arr.length;
    //Внешний цикл контролирует количество сортировок. Каждый проход пузырьковой сортировки будет «всплывать» самый большой элемент до конца множества, поэтому его необходимо выполнить. n-1 поездка, среди которой n общее количество элементов
    for (int i = 0; i < n - 1; i++) {
        //Внутренний цикл контролирует количество сравнений для каждого прохода. Поскольку каждый проход опускает самый большой элемент в конец множества, количество внутренних циклов постепенно уменьшается.
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // Поменять местами arr[j] и arr[j+1]
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
        System.out.println("Thing "+(i+1)+": "+Arrays.toString(arr));
    }
}

Результат вывода:

Язык кода:javascript
копировать
Поездка 1: [5, 4, 3, 6, 2, 7]
Поездка 2: [4, 3, 5, 2, 6, 7]
Поездка 3: [3, 4, 2, 5, 6, 7]
Поездка 4: [3, 2, 4, 5, 6, 7]
Поездка 5: [2, 3, 4, 5, 6,7]
пузырьсортировать Законченныймножество:[2, 3, 4, 5, 6, 7]

Производительность пузырьковой сортировки

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

  • Изучение алгоритма сортировки: Пузырьковая сортировка — хорошая отправная точка для понимания алгоритма сортировки.,Его реализация очень проста,Помогает новичкам понять основные понятия сортировки.
  • Небольшие наборы данных: для небольших наборов данных.,Барботажная сортировка может быть разумным выбором.,Потому что его реализация проста и ее легко написать.

на Яве ЯДК,Пузырьковая сортировка обычно не используется непосредственно в реальном производственном коде. Java предоставляет более эффективный метод сортировки.,НапримерArrays.sort()используется длямножестворуководитьсортировать,а такжеCollections.sort()используется для коллекцийсортировать,Эти методы используют более эффективный алгоритм сортировки.,так быстросортироватьи объединитьсортировать。

Подвести итог

Короче говоря, пузырьковая сортировка — это простой и понятный алгоритм сортировки, который играет важную роль в процессе изучения алгоритмов сортировки. Однако в реальных приложениях Java JDK предоставляет более эффективные методы сортировки, и для повышения производительности рекомендуется использовать эти методы. Ценность пузырьковой сортировки заключается в базовом понимании алгоритмов сортировки. В реальных проектах обычно необходимы более эффективные алгоритмы сортировки, чтобы справиться с потребностями сортировки крупномасштабных данных.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose