Bubble Алгоритм сортировки с Python используя пример списка

⚡ Умное резюме

BubblСортировка e упорядочивает элементы списка в порядке возрастания путем многократного сравнения соседних значений и обмена их местами.ping их, когда левый элемент больше. Эта простая сортировка сравнением подходит для небольших или почти отсортированных наборов данных и эффективно обучает основным принципам сортировки.

  • 🔁 Основной механизм: BubblФункция сортировки сравнивает каждую пару смежных элементов и меняет их местами, перемещая наибольшее несортированное значение на его конечную позицию после каждого прохода.
  • ⚙️ Оптимизированный вариант: Переменная-флаг определяет, когда при выполнении операции обмена ничего не происходит, прерывая цикл на ранней стадии, чтобы уже отсортированный список завершился за один проход.
  • 🐍 Python Реализация: Два вложенных цикла плюс временная переменная сортируют список, а пошаговое руководство сопоставляет каждую строку с её точным поведением.
  • 📊 Профиль сложности: Временная сложность составляет O(n²) в худшем и среднем случаях, Ω(n) в лучшем случае, при этом требуется постоянная объемная сложность O(1).
  • 🎯 Лучше всего подходит: BubblАлгоритм e-sort отлично подходит для обучения и обработки почти отсортированных списков, но показывает низкую эффективность на больших наборах данных по сравнению с более сложными алгоритмами.

BubblАлгоритм электронной сортировки

Что такое Bubblе Сортировать?

Bubblэлектронная сортировка Это алгоритм сортировки, используемый для сортировки элементов списка в порядке возрастания путем сравнения двух соседних значений. Если первое значение больше второго, первое значение занимает позицию второго, а второе — позицию первого. Если первое значение меньше второго, то обмен не производится.ping готово.

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

В этом Bubblе Сортировка Python учебник Вы узнаете, какую проблему оно решает, его оптимизированную форму, пошаговый визуальный обзор, а также рабочий пример. Python программа и её рабочие характеристики.

Реализация BubblАлгоритм электронной сортировки

Мы разделим реализацию на три (3) этапа, а именно: проблема, решение и алгоритм, который мы можем использовать для написания кода на любом языке.

Проблема

Список предметов представлен в случайном порядке, и мы хотели бы расположить их в упорядоченном порядке.

Рассмотрим следующий список:

[21, 6, 9, 33, 3]

решение

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

Результат должен быть таким:

[3, 6, 9, 21, 33]

Алгоритм

Алгоритм пузырьковой сортировки работает следующим образом:

Шаг 1) Получите общее количество элементов. Получите общее количество элементов в заданном списке.

Шаг 2) Определите количество внешних проходов (n – 1), которые необходимо выполнить. Их длина равна списку минус один.

Шаг 3) Для первого внешнего прохода выполните внутренние проходы (n – 1) раз. Получите значение первого элемента и сравните его со значением второго. Если второе значение меньше первого, поменяйте позиции местами.

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

Шаг 5) Возвращает результат после завершения всех проходов. Возвращает результаты отсортированного списка.

Шаг 6) Оптимизировать алгоритм.

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

Оптимизированный BubblАлгоритм электронной сортировки

По умолчанию алгоритм пузырьковой сортировки в Python сравнивает все элементы в списке независимо от того, отсортирован ли список или нет. Если данный список уже отсортирован, сравнение всех значений — пустая трата времени и ресурсов.

Оптимизация пузырьковой сортировки помогает нам избежать ненужных итераций и сэкономить время и ресурсы.

Например, если первый и второй элементы уже отсортированы, нет необходимости перебирать остальные значения. Итерация завершается, и начинается следующая, пока процесс не завершится, как показано ниже. Bubble Пример сортировки.

Оптимизация проводится с использованием следующих шагов:

Шаг 1) Создайте переменную-флаг, которая будет отслеживать наличие каких-либо обменов.ping Произошло во внутреннем цикле.

Шаг 2) Если значения поменялись местами, переходите к следующей итерации.

Шаг 3) Если значения не поменялись местами, завершите внутренний цикл и продолжите работу с внешним циклом.

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

Визуальное представление

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

На следующем изображении показан несортированный список:

Bubble Сортировать несортированный список

Первая итерация

Шаг 1)

Bubble. Сортировка путем сравнения 21 и 6.

Значения 21 и 6 сравниваются, чтобы проверить, какое из них больше другого.

Bubble Сорт обменping 21 и 6

21 больше 6, поэтому 21 занимает позицию, которую занимало 6, а 6 занимает позицию, которую занимало 21.

Bubble. Сортировка измененного списка после обмена.

Наш измененный список теперь выглядит так, как показано выше.

Шаг 2)

Bubble. Сортировка путем сравнения 21 и 9.

Значения 21 и 9 сравниваются.

Bubble Сорт обменping 21 и 9

21 больше 9, поэтому мы меняем местами 21 и 9.

Bubble. Сортировка нового списка после обмена.

Новый список теперь выглядит так, как показано выше.

Шаг 3)

Bubble. Сортировка путем сравнения 21 и 33.

Значения 21 и 33 сравниваются, чтобы найти большее.

Bubble Сортировка 33 больше 21 без обмена

Значение 33 больше 21, поэтому обмена нет.ping имеет место.

Шаг 4)

Bubble. Сортировка путем сравнения 33 и 3.

Значения 33 и 3 сравниваются, чтобы найти большее.

Bubble Сорт обменping 33 и 3

Значение 33 больше 3, поэтому мы меняем их местами.

Bubble. Сортировка отсортированного списка после первой итерации.

Отсортированный список в конце первой итерации выглядит так же, как и приведенный выше.

Вторая итерация

Новый список после второй итерации выглядит следующим образом:

Bubble. Сортировка списка после второй итерации

Третья итерация

Новый список после третьей итерации выглядит следующим образом:

Bubble. Сортировка списка после третьей итерации.

Четвертая итерация

Новый список после четвертой итерации выглядит следующим образом:

Bubble. Полностью отсортированный список после четвертой итерации.

Python Примеры

В следующем коде показано, как реализовать Bubble Алгоритм сортировки в Python.

def bubbleSort(theSeq):
    n = len(theSeq)

    for i in range(n - 1):
        flag = 0

        for j in range(n - 1):
            if theSeq[j] > theSeq[j + 1]:
                tmp = theSeq[j]
                theSeq[j] = theSeq[j + 1]
                theSeq[j + 1] = tmp
                flag = 1

        if flag == 0:
            break

    return theSeq

el = [21, 6, 9, 33, 3]
result = bubbleSort(el)
print(result)

Выполнение указанной выше программы пузырьковой сортировки в Python дает следующие результаты:

[3, 6, 9, 21, 33]

Code объяснение

Объяснение Python BubblПрограммный код e-Sort выглядит следующим образом:

Bubblэлектронная сортировка Python объяснение кода

ВОТ,

  1. Определяет функцию bubbleSort, которая принимает параметр theSeq. Код ничего не выводит.
  2. Получает длину массива и присваивает это значение переменной n. Код ничего не выводит.
  3. Запускается цикл for, который выполняет алгоритм сортировки пузырьком (n – 1) раз. Это внешний цикл. Код ничего не выводит.
  4. Определяет переменную-флаг, которая будет использоваться для определения того, произошла ли перестановка или нет. Это сделано в целях оптимизации. Код ничего не выводит.
  5. Запускает внутренний цикл, который сравнивает все значения в списке от первого до последнего. Код ничего не выводит.
  6. Использует оператор if, чтобы проверить, больше ли значение в левой части, чем значение в правой части. Код ничего не выводит.
  7. Присваивает значение переменной theSeq[j] временной переменной tmp, если условие истинно. Код ничего не выводит.
  8. Значение переменной theSeq[j + 1] присваивается позиции переменной theSeq[j]. Код ничего не выводит.
  9. Значение переменной tmp присваивается позиции theSeq[j + 1]. Код ничего не выводит.
  10. Переменной-флагу присваивается значение 1, указывающее на то, что произошла замена. Код ничего не выводит.
  11. В коде используется условное выражение для проверки, равно ли значение переменной flag нулю. Код ничего не выводит.
  12. Если значение равно 0, мы вызываем оператор прерывания, который выходит из внутреннего цикла.
  13. Возвращает значение Seq после его сортировки. Код выводит отсортированный список.
  14. Определяет переменную el, содержащую список случайных чисел. Код ничего не выводит.
  15. Присваивает значение функции bubbleSort переменной result.
  16. Печатает значение переменной result.

BubblПреимущества электронной сортировки

Ниже перечислены некоторые преимущества алгоритма пузырьковой сортировки:

  • Это легко понять.
  • Он отлично работает, когда список уже отсортирован или почти отсортирован.
  • Он не требует обширной памяти.
  • Написать код для алгоритма несложно.
  • Требования к пространству минимальны по сравнению с другими алгоритмами сортировки.

BubblЭлектронная сортировка Недостатки

Ниже перечислены некоторые недостатки алгоритма пузырьковой сортировки:

  • Он не очень хорошо работает при сортировке больших списков. Это отнимает слишком много времени и ресурсов.
  • Он используется преимущественно в академических целях, а не в практическом применении.
  • Число шагов, необходимых для сортировки списка, имеет порядок n.2.

Анализ сложности Bubblэлектронная сортировка

Существует три типа сложности:

1) Сложность сортировки

Сложность сортировки используется для выражения количества времени выполнения и памяти, необходимых для сортировки списка. Сортировка пузырьком выполняет (n – 1) итераций для сортировки списка, где n — общее количество элементов в списке.

2) Временная сложность

Временная сложность пузырьковой сортировки составляет O(n2).

Временные сложности можно разделить на:

  • Худший случай – здесь представленный список расположен в порядке убывания. Алгоритм выполняет максимальное количество выполнений, которое выражается как [Big-O] O(n2).
  • лучший случай – это происходит, когда предоставленный список уже отсортирован. Алгоритм выполняет минимальное количество итераций, которое выражается как [Большая Омега] Ω(n).
  • Средний случай – это происходит, когда список расположен в случайном порядке. Средняя сложность представляется как [Большое-тета] ⊝(n)2).

3) Пространственная сложность

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

Часто задаваемые вопросы (FAQ)

BubblСортировка пузырьком редко используется в ИИ на практике, но она помогает понять логику сортировки, лежащую в основе подготовки данных. Конвейеры машинного обучения сортируют признаки, оценки и прогнозы с помощью более быстрых алгоритмов, однако сортировка пузырьком разъясняет концепцию сравнения и обмена для начинающих.

Да. Искусственные интеллекты могут запрограммировать сортировку пузырьком. Python, Java или C++ и добавить оптимизацию с помощью флага, которая останавливается на ранней стадии обработки отсортированного списка. Они также могут предлагать более быстрые алгоритмы при увеличении размера набора данных.

Этот метод называется пузырьковой сортировкой, потому что большие значения постепенно «поднимаются» к концу списка с каждым проходом, подобно пузырькам воздуха, поднимающимся к поверхности воды, в то время как меньшие значения опускаются к началу.

BubblСортировка e выполняется за время O(n²), что значительно медленнее, чем быстрая сортировка и сортировка слиянием, занимающие время O(n log n). BubblСортировка e подходит для небольших или учебных примеров, в то время как быстрая сортировка и сортировка слиянием эффективно обрабатывают большие реальные наборы данных.

Подведем итог этой публикации следующим образом: