Bubble Алгоритм сортировки с Python используя пример списка
⚡ Умное резюме
BubblСортировка e упорядочивает элементы списка в порядке возрастания путем многократного сравнения соседних значений и обмена их местами.ping их, когда левый элемент больше. Эта простая сортировка сравнением подходит для небольших или почти отсортированных наборов данных и эффективно обучает основным принципам сортировки.
Что такое 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) Если значения не поменялись местами, завершите внутренний цикл и продолжите работу с внешним циклом.
Оптимизированная пузырьковая сортировка более эффективна, поскольку она выполняет только необходимые шаги и пропускает ненужные.
Визуальное представление
На следующих изображениях, иллюстрирующих алгоритм пузырьковой сортировки, представлен список из пяти элементов, происходит итерация по значениям при их сортировке.
На следующем изображении показан несортированный список:
Первая итерация
Шаг 1)
Значения 21 и 6 сравниваются, чтобы проверить, какое из них больше другого.
21 больше 6, поэтому 21 занимает позицию, которую занимало 6, а 6 занимает позицию, которую занимало 21.
Наш измененный список теперь выглядит так, как показано выше.
Шаг 2)
Значения 21 и 9 сравниваются.
21 больше 9, поэтому мы меняем местами 21 и 9.
Новый список теперь выглядит так, как показано выше.
Шаг 3)
Значения 21 и 33 сравниваются, чтобы найти большее.
Значение 33 больше 21, поэтому обмена нет.ping имеет место.
Шаг 4)
Значения 33 и 3 сравниваются, чтобы найти большее.
Значение 33 больше 3, поэтому мы меняем их местами.
Отсортированный список в конце первой итерации выглядит так же, как и приведенный выше.
Вторая итерация
Новый список после второй итерации выглядит следующим образом:
Третья итерация
Новый список после третьей итерации выглядит следующим образом:
Четвертая итерация
Новый список после четвертой итерации выглядит следующим образом:
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 выглядит следующим образом:
ВОТ,
- Определяет функцию bubbleSort, которая принимает параметр theSeq. Код ничего не выводит.
- Получает длину массива и присваивает это значение переменной n. Код ничего не выводит.
- Запускается цикл for, который выполняет алгоритм сортировки пузырьком (n – 1) раз. Это внешний цикл. Код ничего не выводит.
- Определяет переменную-флаг, которая будет использоваться для определения того, произошла ли перестановка или нет. Это сделано в целях оптимизации. Код ничего не выводит.
- Запускает внутренний цикл, который сравнивает все значения в списке от первого до последнего. Код ничего не выводит.
- Использует оператор if, чтобы проверить, больше ли значение в левой части, чем значение в правой части. Код ничего не выводит.
- Присваивает значение переменной theSeq[j] временной переменной tmp, если условие истинно. Код ничего не выводит.
- Значение переменной theSeq[j + 1] присваивается позиции переменной theSeq[j]. Код ничего не выводит.
- Значение переменной tmp присваивается позиции theSeq[j + 1]. Код ничего не выводит.
- Переменной-флагу присваивается значение 1, указывающее на то, что произошла замена. Код ничего не выводит.
- В коде используется условное выражение для проверки, равно ли значение переменной flag нулю. Код ничего не выводит.
- Если значение равно 0, мы вызываем оператор прерывания, который выходит из внутреннего цикла.
- Возвращает значение Seq после его сортировки. Код выводит отсортированный список.
- Определяет переменную el, содержащую список случайных чисел. Код ничего не выводит.
- Присваивает значение функции bubbleSort переменной result.
- Печатает значение переменной 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).

















