Автор оригинала: Pankaj Kumar.
Давайте изучим один из самых интуитивных и простых и простых изучения алгоритмов сортировки и внедрять пузырь в Python. Мы начнем с понимания самого сортировки, а затем мы доберемся сортировкой через пузырь, и, наконец, посмотрим, как его реализовать в Python.
Важность сортировки алгоритмов
Что такое сортировка? И почему это так важно? Это вопросы, которые мы постараемся ответить в этом разделе.
Из книг в библиотеке и словах в словаре к записям базы данных и инструкции в процессоре мы испытали сортировку много раз.
« в информатике, сортировка – это акт организации вещей в упорядоченной последовательности ». – Википедия
Это означает, что когда мы сортируем вещи, нам нужно знать критерии, на которые мы будем организовать последовательность, переданную нам. Для целей настоящего Учебника мы будем предполагать, что критерии – это значение числа, и мы сортируем заданную последовательность чисел.
В информатике наиболее важной целью сортировки состоит в том, чтобы произвести эффективные алгоритмы. Двоичный поиск – исключительно быстрый алгоритм поиска, который не будет возможно в несортированной коллекции объектов.
Почти все установленные операции работают очень быстро на сортировке данных.
Помимо эффективных алгоритмов, сортировка используется, когда очень требование программы сортируется что-то, как программа, которая работает с палубой карт. Следовательно, алгоритмы сортировки являются одним из самых фундаментальных концепций, который должен знать программист.
Понимание алгоритма сортировки пузыря
Подумайте о том, как в стакане соды пузырьки внутри поднимаются. Пузырьки представляют собой величайший/наименьший элемент в заданной последовательности, и растущие движения пузыря представляют, как величайший/наименьший элемент перемещается до конца/начала последовательности.
Вот как работает пузырька, и почему у него есть имя.
Чтобы проложить его просто, мы проходим через последовательность несколько раз, и каждый раз, когда мы поменяем несколько пар элементов таким образом, что наибольший/наименьший элемент в последовательности заканчивается на одном из концов последовательности.
Ради этого учебника мы рассмотрим данный массив, и мы отсортируем его в растущем порядке стоимости чисел.
12, 16, 11, 10, 14, 13
Теперь алгоритм пузырькового сорта работает так, как это для сортировки в увеличении порядка:
- Рассмотрим две переменные Я и J Отказ Я представляет количество элементов, которые мы сортировали или количество раз, когда мы проходили через список, потому что каждый раз, когда мы проходим через список, который мы сортируем один элемент наверняка. J представляет позицию в списке, так что если мы говорим, что J 3, тогда мы говорим о третьем номере в списке, который 11.
- Рассмотреть возможность n как количество элементов в списке.
- Пусть Я быть равным 0. Потому что мы не проходили через список, и никакие элементы не сортируются.
- Пусть J быть равным 1. Таким образом, мы начинаем с номера в первой позиции.
- Если номер в положении J больше, чем число в положении J + 1 Затем нам нужно поменять номера на позициях J и J + 1 Отказ Это связано с тем, что список находится в увеличении порядка, поэтому число, которое приходит до того, как не может быть больше, чем число, которое приходит после.
- Увеличение J К 1. Так что теперь мы можем посмотреть на следующую пару чисел.
- Если J не N-I Перейдите к шагу 5, в противном случае мы остановим петлю и перейдем к следующему шагу. В этой петле каждый раз, когда происходит своп, больший элемент перемещается к концу списка. Это поведение пузырькового сорта, величайшие элементы пузырька к концу списка. Если Я представляет количество элементов, уже отсортированных, то последний Я Элементы списка находятся в их правильном положении (потому что они пробиваются во время I Количество раз, когда мы проходили через петлю), поэтому нам не нужно проверять последний Я Элементы, так как это будет только тратить время, и, следовательно, контур заканчивается, когда j равно N-I Отказ
- Увеличение Я К 1. Если мы закончили петлю, когда J Дошел до конца, мы прошли через список еще раз, и еще один элемент отсортирован.
- Если Я не N-1 Затем перейдите к шагу 4, в противном случае мы остановим петлю с Я и перейти к следующему шагу. Как вы могли заметить, есть две петли, внутренний с J несет ответственность за сортировку еще одного элемента, и у нас есть все элементы, которые обрабатывают внешний цикл, который работает на Я Отказ Если Я становится N-1 это значит N-1 Элементы сортируются, что автоматически означает, что последний элемент также находится в его правильном положении, и это означает, что вся последовательность сортируется, и поэтому мы останавливаемся.
- Последовательность отсортирована.
Теперь вы можете попробовать это по данной последовательности, и это то, что мы сейчас сделаем.
Пример сортировки пузыря
Учитывая последовательность: 12, 16, 11, 10, 14, 13 Количество элементов ( n ): 6 Давайте начнем-
- Шаг 1: Переменные Я и J Представление отсортированных элементов и позиции.
- Шаг 2: N 6. N.
- Шаг 3: Установить Я Как 0. я
- Шаг 4: Установить J Как 1. j
- Шаг 5: Сравнение позиций J и J + 1 Элемент в положении 1 (12) не превышает один при 2 (16).
- Шаг 6: Увеличение J Отказ j
- Шаг 7: J (2) не N-I (6), поэтому мы идем к шагу 5.
- Шаг 5: Положение 2 (16) больше, чем позиция 3 (11), поэтому мы поменяем.
- Последовательность: 12, 11 , 16 , 10, 14, 13
- Шаг 6: Увеличение J Отказ j
- Шаг 7: 3 не 6, поэтому мы идем к шагу 5.
- Шаг 5: 16 больше 10, поэтому мы поменяем. Последовательность: 12, 11, 10 , 16 , 14, 13
- Шаг 6: Увеличение J Отказ j
- Шаг 7: 4 не 6, поэтому мы идем к шагу 5.
- Шаг 5: 16 больше 14, поэтому мы поменяем. Последовательность: 12, 11, 10, 14 , 16 13.
- Шаг 6: Увеличение J Отказ j
- Шаг 7: 5 не 6, поэтому мы идем к шагу 5.
- Шаг 5: 16 больше 13, поэтому мы поменяем. Последовательность: 12, 11, 10, 14, 13 , 16.
- Шаг 6: Увеличение J Отказ j
- Шаг 7: J (6) равен N-I (6), поэтому мы переходим к шагу 8. Обратите внимание, что наибольший элемент (16) находится в конце, и мы отсортировали один элемент наверняка.
- Шаг 8: Увеличение я. я
- Шаг 9: Я (1) не N-1 (5), поэтому мы повторяем все это по сравнению с шагом 4, а цикл продолжается, полученные изменения в последовательности будут выглядеть так:
11 , 12 , 10, 14, 13, 16 11, 10 , 12 , 14, 13, 16 11, 10, 12 , 14 , 13, 16 11, 10, 12, 13 , 14 , 16 10 , 11 12, 13, 14 , 16 10, 11 , 12 , 13, 14 , 16 10, 11, 12 , 13 , 14 , 16 10 , 11 12, 13 , 14 , 16 10, 11 , 12 , 13 , 14 , 16 10 , 11 , 12 , 13 , 14 , 16 10 , 11 , 12 , 13 , 14 , 16.
После этого Я становится 5, что это N-1 Таким образом, контурные контуры и алгоритм говорит нам, что список отсортирован. Также кажется, что список может быть отсортирован до окончания алгоритма, что просто означает, что заданная последовательность была несколько отсортирована до того, как она была передана алгоритму.
Реализация пузыря Сортировка в Python
Теперь, когда у нас есть алгоритм готовый, мы можем начать реализовать каждый шаг в Python. Есть некоторые вещи, чтобы примечание:
Последовательность будет представлена списком, а списки имеют индексы вместо позиций, а индексы переходят от 0 до размера-1 вместо 1 до размера, поэтому нужно будет настроить, а вот как будет выглядеть алгоритм:
def bubble_sort(sequence): n = len(sequence) for i in range(n-1): for j in range(n-i-1): if(sequence[j] > sequence[j+1]): sequence[j], sequence[j+1] = sequence[j+1], sequence[j]
Давайте будем использовать пример и сортировать его с помощью этого алгоритма:
Обратите внимание, что этот алгоритм сортирует список на месте, но очень просто изменить алгоритм, чтобы вместо этого он возвращает отсортированный список.
Заключение
В этом уроке мы изучали, что такое сортировка и где он используется, то мы узнали, как Bubble Sort работает, мы придумали алгоритм и реализовали пузырь в Python.
Bubble Sort – один из многих сортировковных алгоритмов, и он далеко от лучшего, но это очень легко реализовать. Причина, по которой она не используется слишком часто, так это то, что у него сложность O (n 2 ), что означает, что количество элементов в списке удвоилось, время, необходимое для сортировки их использования этого алгоритма, увеличится в четыре раза.
Таким образом, для очень большого количества данных этот алгоритм становится неэффективным. Тем не менее, зная пузырь, как программист важен, и я надеюсь, что вы узнали что-то.