Вступ до сортування алгоритмів у Python

Сортування - це процес перестановки елементів у певному порядку, щоб до нього можна було застосувати відповідну обробку. сортування стає необхідним, оскільки в більшості випадків дані, отримані з джерела, залишаються погано упорядкованими. Щоб перемогти над цим, протягом багатьох років було створено кілька алгоритмів сортування. давайте коротко обговоримо деякі ключові алгоритми сортування, що використовуються за допомогою програмування python.

Топ-6 алгоритмів сортування в 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. Сортування вставки

Встановлення впорядкування механізму сортування здійснюється шляхом побудови відсортованого масиву з одного елемента за раз. елементи масиву порівнюються послідовно і потім переставляються в одному конкретному порядку. Компоненти масиву порівнюються послідовно з кожним із елементів, а потім упорядковуються одночасно у визначеному порядку. Аналогія, яка використовується тут, дуже схожа на упорядкування набору карт.

Код:

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. Злиття сортування

Сортування злиття працює за принципом ділення і підкорює алгоритм. Тут даний вхід розбивається на дві половини, а сплайсиновані половинки сортуються та потім об'єднуються. У сприйнятті пітона функція 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. Сортування радікса

Radix sort - це метод сортування, який прогресує, не порівнюючи введені елементи. Це досягається за допомогою генерування відра відповідно до значення радіації для елементів з більш ніж однією цифрою, яка застосовується для всіх цифр елемента. Його також називають різновидом відра. Ця техніка сортування, як правило, занадто швидка у відповідних умовах.

Код:

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