Пузырьковая сортировка C++: реализация, оптимизация и сложность

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

Вот объяснение алгоритма пузырьковой сортировки в C++ и некоторых дополнительных методов, связанных с ним:

  1. Алгоритм пузырьковой сортировки.
    Пузырьковая сортировка – это простой алгоритм сортировки, который неоднократно меняет местами соседние элементы, если они расположены в неправильном порядке. Это продолжается до тех пор, пока весь массив не будет отсортирован. Вот пример реализации на C++:

    void bubbleSort(int arr[], int n) {
       for (int i = 0; i < n - 1; i++) {
           for (int j = 0; j < n - i - 1; j++) {
               if (arr[j] > arr[j + 1]) {
                   int temp = arr[j];
                   arr[j] = arr[j + 1];
                   arr[j + 1] = temp;
               }
           }
       }
    }
  2. Оптимизированная пузырьковая сортировка.
    Базовый алгоритм пузырьковой сортировки можно оптимизировать, введя флаг, проверяющий, были ли сделаны какие-либо замены во время прохода. Если никаких свопов не было, это означает, что массив уже отсортирован и алгоритм может завершиться досрочно. Вот пример оптимизированного алгоритма пузырьковой сортировки на C++:

    void optimizedBubbleSort(int arr[], int n) {
       bool swapped;
       for (int i = 0; i < n - 1; i++) {
           swapped = false;
           for (int j = 0; j < n - i - 1; j++) {
               if (arr[j] > arr[j + 1]) {
                   int temp = arr[j];
                   arr[j] = arr[j + 1];
                   arr[j + 1] = temp;
                   swapped = true;
               }
           }
           if (!swapped)
               break;
       }
    }
  3. Временная сложность.
    Средняя и наихудшая временная сложность алгоритма пузырьковой сортировки равна O(n^2), где n — количество элементов в массиве. Это делает его неэффективным для больших наборов данных.

  4. Пространственная сложность.
    Пространственная сложность пузырьковой сортировки равна O(1), поскольку для временных переменных требуется только постоянное количество дополнительного пространства.

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