Введение в алгоритмы сортировки в Python

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

6 лучших алгоритмов сортировки в Python

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

1. Пузырьковая сортировка

Пузырьковая сортировка является одним из наиболее часто используемых методов сортировки, начиная с первых двух пар элементов, она включает в себя сортировку серии элементов путем сравнения каждой соседней пары элементов. поэтому, когда установлен неправильный порядок, происходит замена элементов. До тех пор, пока последний элемент во входном наборе не будет ощутимо продолжен, вышеописанный процесс, чтобы оптимизировать алгоритм, мы призываем остановить его после завершения сортировки. Как, возможно, мы узнаем, что мы завершили сортировку? это может быть определено, когда все заданные элементы находятся в порядке. Таким образом, всякий раз, когда переменные меняются местами, может поддерживаться флаг для определения повторного выполнения процесса сортировки. Флаг должен быть установлен в false, когда никакие другие перестановки не нужны.

Код:

def bubble_Sort(array):
length = len(array)
# loop through each and every element which are keyed
# loop through each and every element which are keyed
for iterator_1 in range(length):
#loop through next element
for iterator_2 in range(0, length-iterator_1-1):
# From 0 to ni-1 the array value needs to be looped upon
# when a element greater than the next element then the collected element needs to be swapped.
if array(iterator_2) > array(iterator_2 + 1) :
array(iterator_2), array(iterator_2 + 1) = array(iterator_2 + 1), array(iterator_2) # Driver code to test above
array = (75, 34, 54, 56, 78, 1) bubble_Sort(array)
print ("Array values after sorting:")
for i in range(len(array)):
print ("%d" %array(i))

Выход:

2. Выбор сортировки

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

Код:

import sys
Array = (63, 75, 13, 2, 441) # loop through each and every element in the array
for element1 in range(len(Array)):
# To determine the least element in the remaining list
minimum_idx = element1
for element2 in range(element1+1, len(Array)):
if Array(minimum_idx) > Array(element2):
min_idx = element2
# swap the determined least element with the previous element in the list
Array(element1), Array(minimum_idx) = Array(minimum_idx), Array(element1) # main code
print ("Array after getting sorted by selection sort")
for i in range(len(Array)):
print("%d" %Array(i))

Выход:

3. Вставка сортировки

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

Код:

def insertion_Sort(array):
# pass through 1 to len(array)
for temp_element1 in range(1, len(array)):
key = array(temp_element1) # Move elements of array(0..i-1), that are
# greater than key, to one position ahead
# of their current position
temp_element2 = temp_element1 -1
while temp_element2 >= 0 and key < array(temp_element2) :
array(temp_element2 + 1) = array(temp_element2) temp_element2 -= 1
array(temp_element2 + 1) = key
# Driver code to test above
array = (75, 34, 54, 56, 78, 1) insertion_Sort(array)
for i in range(len(array)):
print ("% d" % array(i))

Выход:

4. Объединить сортировку

Сортировка слиянием работает по принципу «разделяй и властвуй». Здесь данный вход разделен на две половины, а разделенные части отсортированы и затем объединены. В восприятии python функция merge () используется для достижения процесса слияния. алгоритм сортировки вставок, как показано ниже,

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

Код:

def merge_Sort(array):
if len(array) >1:
mid = len(array)//2 #determining the mid of the array
divide = array(:mid) # Dividing the array elements
split = array(mid:) # splitting the array into 2 halves
merge_Sort(divide) # first half of the sorting
merge_Sort(split) # second half of the sorting
i = j = k = 0
# Copy data to temp arrayays divide() and split() while i < len(divide) and j < len(split):
if divide(i) < split(j):
array(k) = divide(i) i+=1
else:
array(k) = split(j) j+=1
k+=1
# Checking if any element was left
while i < len(divide):
array(k) = divide(i) i+=1
k+=1
while j < len(split):
array(k) = split(j) j+=1
k+=1
# Code to print the list
def printdivideist(array):
for i in range(len(array)):
print(array(i), end=" ")
print()
# driver code to test the above code
if __name__ == '__main__':
array = (12, 2, 93, 65, 76, 27) print ("Given array is", end="\n")
printdivideist(array)
merge_Sort(array)
print("Sorted array is: ", end="\n")
printdivideist(array)

Выход:

5. Сортировка кучи

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

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

Код:

def heap_sort(Ordering, number, i):
largest = i # Initialize largest as root
left= 2 * i + 1 # left = 2*i + 1
right= 2 * i + 2 # right = 2*i + 2
# to verify the left child of root is greater than the root
if left< number and Ordering(i) < Ordering(left):
largest = left
# to verify the right child of root is greaterightthan the root
if right< number and Ordering(largest) < Ordering(right):
largest = right
# swap roots on neccesity
if largest != i:
Ordering(i), Ordering(largest) = Ordering(largest), Ordering(i) # swap
# Heapify the root.
heap_sort(Ordering, number, largest)
# main function for Ordering sorting
def heapSort(Ordering):
number = len(Ordering)
# max heap build process.
for i in range(number, -1, -1):
heap_sort(Ordering, number, i)
# extract of all the elements in the given heap
for i in range(number-1, 0, -1):
Ordering(i), Ordering(0) = Ordering(0), Ordering(i) # swap
heap_sort(Ordering, i, 0)
# main section of the code
Ordering = ( 12, 11, 13, 5, 6, 7, 56, 45, 67, 78, 34, 4, 33) heapSort(Ordering)
number = len(Ordering)
print ( "Sorted Ordering value is" )
for i in range( number):
print ( " %d " %Ordering(i))

Выход:

6. Корень сортировки

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

Код:

def radix_sort(The_list, base=10):
if The_list == ():
return
def Input_factory(numeral, base):
def Input(The_list, index):
return ((The_list(index)//(base**numeral)) % base)
return Input
greatest = max(The_list)
exponent = 0
while base**exponent <= greatest:
The_list = sort_count(The_list, base - 1, Input_factory(exponent, base))
exponent = exponent + 1
return The_list
def sort_count(The_list, greatest, Input):
count = (0)*(greatest + 1)
for i in range(len(The_list)):
count(Input(The_list, i)) = count(Input(The_list, i)) + 1
# to determine the last index for each of the element
count(0) = count(0) - 1
# zero-based indexing decrement
for i in range(1, greatest + 1):
count(i) = count(i) + count(i - 1) output_value = (None)*len(The_list)
for i in range(len(The_list) - 1, -1, -1):
output_value(count(Input(The_list, i))) = The_list(i) count(Input(The_list, i)) = count(Input(The_list, i)) - 1
return output_value
The_list = input('Enter the list of (nonnegative) numbers: ').split()
The_list = (int(x) for x in The_list) sorted_list = radix_sort(The_list)
print( ' Radix oriented sorted output : ', end='')
print(sorted_list)

Выход:

Вывод

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

Рекомендуемые статьи

Это руководство по сортировке алгоритмов в Python. Здесь мы обсудим введение и 6 лучших алгоритмов сортировки в python вместе с его реализацией кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше

  1. Изменение числа с помощью различных способов в Python
  2. Различные типы алгоритмов маршрутизации
  3. Типы графиков в Matplotlib в Python
  4. 14 лучших кортежей в Python