Введение

Пузырьковая сортировка — это алгоритм сортировки, используемый в основном для сортировки небольших наборов данных.

Хотя существует множество доступных алгоритмов сортировки, алгоритм пузырьковой сортировки является самым простым в реализации из всех алгоритмов сортировки, но временная сложность пузырьковой сортировки не так велика.

Он работает, сравнивая соседние элементы в массиве и меняя местами элементы, если они находятся в неправильном порядке, и этот процесс продолжается до тех пор, пока массив не будет полностью отсортирован.

Звучит просто, я знаю :)

См. ниже визуализацию пузырьковой сортировки.

Посмотрим на реализации кода

Пузырьковая сортировка Python

def bubbleSort(arr):
    change = False
    for i in range(len(arr)-1):
        if arr[i] > arr[i+1]:
            arr[i], arr[i+1] = arr[i+1], arr[i]
            change = True
    if not change: return arr
    return bubbleSort(arr)

x = [8, 1, 5, 7, 9, 3, 2, 4, 6]
print(x)
print(bubbleSort(x))

Вы можете использовать этот онлайн-компилятор для запуска этого кода.

Пузырьковая сортировка JavaScript

function bubbleSort(arr){
    let change = false
    for (let i=0; i<arr.length-1; i++){
        if (arr[i] > arr[i+1]){
            let tmp = arr[i]
            arr[i] = arr[i+1]
            arr[i+1] = tmp;
            change = true
        }
    }
    if (!change) return arr
    return bubbleSort(arr)
}
let x = [8, 1, 5, 7, 9, 3, 2, 4, 6]

console.log(x)
console.log(bubbleSort(x))

Вы можете использовать этот онлайн-компилятор для запуска этого кода.

Пузырьковая сортировка Java

class Sorting {
    public static int[] bubbleSort(int[] arr) {
        boolean change = false;
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                int tmp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = tmp;
                change = true;
            }
        }
        if (!change)
            return arr;
        return bubbleSort(arr);
    }

    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1)
                System.out.println(arr[i] + "]");
            else
                System.out.print(arr[i] + ", ");
        }
    }
    public static void main(String[] args) {
        int[] x = { 8, 1, 5, 7, 9, 3, 2, 4, 6 };
        printArray(x);
        printArray(bubbleSort(x));
    }
}

Вы можете использовать этот онлайн-компилятор для запуска этого кода.

Пузырьковая сортировка C++

#include <iostream>

int * bubbleSort(int arr[], int size) {
    bool change = false;
    for (int i = 0; i < size - 1; i++) {
        if (arr[i] > arr[i + 1]) {
            int tmp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = tmp;
            change = true;
        }
    }
    if (!change)
        return arr;
    return bubbleSort(arr, size);
}
void printArray(int arr[], int size) {
    std::cout << "[";
    for (int i = 0; i < size; i++) {
        if (i == size - 1)
            std::cout << arr[i] << "]" << std::endl;
        else
            std::cout << arr[i] << ", ";
    }
}
int main() {
    int x[] = { 8, 1, 5, 7, 9, 3, 2, 4, 6 };
    int size = sizeof(x) / sizeof(x[0]);
    printArray(x, size);
    printArray(bubbleSort(x, size), size);
    return 0;
}

Вы можете использовать этот онлайн-компилятор для запуска этого кода.

Пузырьковая сортировка PHP

<?php
function bubbleSort($arr){
    $change = false;
    for ($i=0; $i<count($arr)-1; $i++){
        if ($arr[$i] > $arr[$i+1]){
            $tmp = $arr[$i];
            $arr[$i] = $arr[$i+1];
            $arr[$i+1] = $tmp;
            $change = true;
        }
    }
    if (!$change) return $arr;
    return bubbleSort($arr);
}
$x = [8, 1, 5, 7, 9, 3, 2, 4, 6];

echo json_encode($x);
echo "\n";
echo json_encode(bubbleSort($x));
?>

Вы можете использовать этот онлайн-компилятор для запуска этого кода.

Преимущество

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

Недостаток

  • Пузырьковая сортировка имеет временную сложность O(N²), что делает ее очень медленной для больших наборов данных.
  • Это неэффективно для больших наборов данных, поскольку требует многократного прохождения данных.

Конец статьи. Спасибо за чтение!

Посетите мой веб-сайт, чтобы прочитать больше похожих статей!