Wprowadzenie do algorytmów sortowania w Pythonie

Sortowanie to proces przestawiania elementów w określonej kolejności, aby można było zastosować odpowiednie przetwarzanie. sortowanie staje się konieczne, ponieważ w większości przypadków dane pobrane ze źródła pozostają źle uporządkowane. Aby zwyciężyć, na przestrzeni lat stworzono kilka algorytmów sortowania. omówimy pokrótce niektóre z algorytmów sortowania kluczy używanych przy użyciu programowania w języku Python.

Top 6 algorytmów sortowania w Pythonie

Poniżej znajdują się różne algorytmy sortowania dla Pythona:

1. Sortowanie bąbelkowe

Sortowanie bąbelkowe jest jedną z najczęściej stosowanych technik sortowania, poczynając od pierwszych dwóch par elementów, polega na sortowaniu serii elementów przez porównanie każdej sąsiedniej pary elementów. więc po ustaleniu niewspółosiowości następuje zamiana elementów. Do ostatniego elementu zestawu wejściowego powyższy proces jest kontynuowany zauważalnie, aby zoptymalizować algorytm, wzywamy do zatrzymania go po zakończeniu sortowania. Jak możemy się dowiedzieć, że zakończyliśmy sortowanie? można to ustalić, gdy wszystkie podane elementy są w porządku. Tak więc, za każdym razem, gdy zmienne są zamieniane, można zachować flagę, aby określić ponowne wykonanie procesu sortowania. Flaga powinna być ustawiona na false, gdy nie są potrzebne żadne inne zamiany.

Kod:

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))

Wynik:

2. Wybór sortowania

Sortowanie selekcji jest jedną z najbardziej bazowych technik sortowania. Ta technika polega na znalezieniu najmniejszego lub minimalnego elementu z nieposortowanego zestawu i pozycjonowaniu tego elementu na początku nieposortowanego zestawu. Po zapętleniu tych operacji we wszystkich elementach zestawu można uzyskać całkowicie posortowany zestaw. Algorytm segreguje listę kluczy opartą na dwóch różnych częściach. Wewnętrzna lista lub lista subskrypcji zwykle są już posortowane, co obejmuje generowanie od elementu znajdującego się najbardziej po lewej stronie do elementu znajdującego się najbardziej po prawej stronie, a lista podrzędna elementów wymagających posortowania, które znajdują się na wytchnieniu na liście. Początkowo posortowana podlista jest niewypełniona, a nieposortowana podlista jest pełną listą kluczy.

Kod:

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))

Wynik:

3. Wstawianie Sortuj

W sortowaniu przez wstawianie mechanizm sortowania odbywa się poprzez budowanie posortowanej tablicy z jednym elementem na raz. elementy tablicy są porównywane sekwencyjnie, a następnie przestawiane w jednym określonym porządku. Składniki tablicy są porównywane sekwencyjnie z każdym z elementów, a następnie porządkowane jednocześnie w określonej kolejności. Stosowana tutaj analogia jest bardzo podobna do układania zestawu kart.

Kod:

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))

Wynik:

4. Scal sortowanie

Sortowanie scalające działa na zasadzie algorytmu dzielenia i zdobywania. Tutaj dane wejściowe są łączone w dwie połówki, a łączone połówki są sortowane, a następnie łączone. W percepcji Pythona funkcja merge () służy do osiągnięcia procesu scalania. algorytm sortowania wstawiania jest jak poniżej,

  • Wspomniana tablica musi zostać podzielona na dwie różne części, w tym celu określana jest mediana tablicy.
  • Sortowanie według kolejności jest stosowane w pierwszej połowie podziału.
  • Następnie druga połowa jest również narażona na to samo.
  • W końcu po posortowaniu posegregowane połowy zostają scalone.

Kod:

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)

Wynik:

5. Sortuj sterty

Sortowanie sterty jest formą techniki sortowania selekcji. Polega na segregowaniu danych wejściowych jako posortowanych i nieposortowanych elementów. Następnie algorytm zapętla się w taki sposób w obszarze nieposortowanym, aby w każdej pętli największa wartość została wypchnięta do posortowanego regionu. Proces ten będzie kontynuowany we wszystkich elementach nieposortowanego regionu.

Maksymalna sterty jest tworzona z podanej listy danych wejściowych. Ostatnia wartość jest następnie wielokrotnie zamieniana z pierwszą wartością, a także zakres wartości jest względnie zmniejszany o jeden. Ten proces trwa, dopóki zakres nie zmniejszy się do 1.

Kod:

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))

Wynik:

6. Sortowanie Radix

Sortowanie Radix jest techniką sortowania, która postępuje bez porównywania wprowadzonych elementów. Osiąga się to poprzez wygenerowanie segmentu zgodnie z wartością Radix dla elementów z więcej niż jedną cyfrą, technika jest stosowana dla wszystkich cyfr w elemencie. Jest również określany jako sortowanie kubełkowe. Ta technika sortowania jest zwykle zbyt szybka w odpowiednich środowiskach.

Kod:

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)

Wynik:

Wniosek

Z biegiem czasu opracowano wiele algorytmów do sortowania zestawu danych wejściowych. Zostały zaprojektowane z myślą o osiągnięciu lepszej techniki i zoptymalizowanego wykonania w procesie sortowania. Niektóre z najbardziej kluczowych omówiono powyżej. Z perspektywy Pythona język ten wyróżnia się jako bardzo elastyczny i stały język do projektowania tych algorytmów.

Polecane artykuły

To jest przewodnik po algorytmach sortowania w Pythonie. Tutaj omawiamy wprowadzenie i top 6 algorytmów sortowania w pythonie wraz z jego implementacją kodu. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej-

  1. Odwracanie liczby za pomocą różnych sposobów w Pythonie
  2. Różne typy algorytmów routingu
  3. Typy wykresów w Matplotlib w Pythonie
  4. 14 najlepszych Tuple w Pythonie