Автор оригинала: Chris.
Для кодера, понимание алгоритма Quicksort – это все равно что знание секрета 42 – либо вы получаете его, или вы не принадлежите к клубу. Если вы тоже не знаете, давайте работать на первом!
Алгоритм Quicksort – реализация Python
def qsort(L): # The empty list is sorted by default if L == []: return [] # Pivot is first element pivot = L[0:1] # Sort elements that are smaller than pivot left = qsort([x for x in L[1:] if x < L[0]]) # Sort elements that are larger or equal than pivot right = qsort([x for x in L[1:] if x >= L[0]]) # Concatenate the three parts to the sorted list # assuming left and right are already sorted recursively return left + pivot + right print(qsort([0,33,22]))
Алгоритм – это вариант популярных QuickSort. алгоритм. Функция qsort. сортирует то список . Но почему?
Быстрая объяснение
QuickSort выбирает элемент поворота из списка. В фрагменте кода он выбирает первый элемент списка, используя Индексирование , то есть, Л [0]
Отказ
- Затем алгоритм перемещает все элементы, меньшие, чем поворот на левую сторону.
- Аналогично, он перемещает элементы, которые больше или равны, чем поворачивается с правой стороны.
Это повторяется рекурсивным способом слева и правильных списках.
Предположим, вы создаете новый список следующим образом. Вы положили все элементы, меньшие повороты слева, затем поворот, затем все элементы, которые больше или равны повороту справа. Полученный список чувствует немного более отсортированно, верно? Если бы два сублиста были уже отсортированы, список будет идеально отсортирован. Это где рекурсивный звонок QSort
вступает в игру. Требуется проблема сортировки каждого сублиста, применяя ту же схему поворота и рекурсии в сублиста.
Вот визуальное объяснение, я подготовил как часть моей книги Python One-listers :
Интерактивный переводчик QuickSort.
Вы можете проверить этот код в нашем интерактивном оболочке кода:
Упражнение : Попробуйте сортировать строковый список – это работает?
Код головоломки Quicksort.
Вот головоломка кода, касающаяся алгоритма Quicksort, которую вы можете наслаждаться, щелкните по изображению, чтобы решить его в нашем интерактивном приложении головоломки Finxter:
Вы мастер-кодер? Проверьте свои навыки сейчас!
Связанное видео.
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Оригинал: “https://blog.finxter.com/daily-python-puzzle-quicksort-agorithm/”