Сортировка стала проще: пузырьковая сортировка в Python, объясненная примерами

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

Что такое пузырьковая сортировка?
Пузырьковая сортировка – это простой алгоритм сортировки на основе сравнения. Он работает путем многократной замены соседних элементов, если они расположены в неправильном порядке. Алгоритм получил свое название потому, что более мелкие элементы “всплывают” вверху списка, подобно тому, как пузырьки поднимаются в жидкости.

Реализация на Python:
Давайте углубимся в код Python для пузырьковой сортировки. Мы начнем с базовой реализации и постепенно ее усовершенствуем.

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        # Last i elements are already sorted
        for j in range(0, n - i - 1):
            # Swap if the element found is greater than the next element
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

Объяснение:

  1. Начнем с определения функции bubble_sort, которая принимает на вход массив arr.
  2. Переменная nхранит длину массива.
  3. Мы используем два вложенных цикла. Внешний цикл повторяется nраз, что соответствует количеству проходов, необходимых для сортировки массива.
  4. Внутренний цикл сравнивает соседние элементы и меняет их местами, если они расположены в неправильном порядке.
  5. Условие ifпроверяет, больше ли текущий элемент, чем следующий. Если это правда, замена происходит с использованием функции назначения кортежей Python.
  6. После завершения внутреннего цикла для каждого прохода самый большой элемент окажется в правильном положении в конце массива.
  7. Алгоритм повторяет этот процесс до тех пор, пока не будет отсортирован весь массив.

Пример использования:
Теперь давайте посмотрим на пузырьковую сортировку в действии на нескольких примерах:

Пример 1:

numbers = [5, 2, 9, 1, 3]
bubble_sort(numbers)
print(numbers)  # Output: [1, 2, 3, 5, 9]

Пример 2:

names = ['Alice', 'Bob', 'Charlie', 'Eve']
bubble_sort(names)
print(names)  # Output: ['Alice', 'Bob', 'Charlie', 'Eve']

Производительность и оптимизация.
Пузырьковая сортировка имеет временную сложность O(n^2), что означает, что ее производительность значительно снижается для больших списков. Однако в нем есть несколько оптимизаций, которые могут повысить его эффективность, например:

  • Добавление флага, определяющего, были ли произведены какие-либо замены во время прохода, что позволяет досрочно завершить работу, если массив уже отсортирован.
  • Отслеживание последнего замененного индекса для уменьшения количества сравнений при последующих проходах.

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