Uvod u sortiranje algoritama u Pythonu

Razvrstavanje je proces preuređenja elemenata nekim redoslijedom tako da se na njega može primijeniti odgovarajuća obrada. sortiranje postaje nužno jer u većini slučajeva podaci dohvaćeni iz izvora ostaju loše uređeni. Kako bi se nadvladalo ovo, tijekom nekoliko godina stvoreno je nekoliko algoritama sortiranja. neka nam ukratko razmotri neke od ključnih algoritama za razvrstavanje koji se koriste pomoću python programiranja.

Top 6 sortiranja algoritama na Pythonu

Ispod su različiti algoritmi sortiranja pythona:

1. Bubble Sort

Sorta mjehurića jedna je od najčešće korištenih tehnika sortiranja, počevši od prva dva para elemenata, a ona uključuje sortiranje niza elemenata uspoređujući svaki susjedni par elemenata. pa kad se uspostavi neusklađeni red tada se vrši zamjena elemenata. Sve dok posljednji element u skupu ulaza gornji postupak ne opazi, radi optimiziranja algoritma, pozivamo da ga zaustavimo nakon što je završio razvrstavanje. Kako ćemo eventualno ustanoviti da smo sortirali? to bi se moglo utvrditi kada su sve dane stavke u redu. Dakle, kad god se izmjene varijable, zastava se može održati kako bi se utvrdilo ponovno izvršenje postupka sortiranja. Zastava bi trebala biti postavljena na false kada nisu potrebne druge zamjene.

Kodirati:

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

Izlaz:

2. Izbor sortiranja

Selekcijsko sortiranje spada među najčešće metode sortiranja. Ova tehnika uključuje pronalaženje najmanjeg ili minimalnog elementa iz nesortiranog skupa i pozicioniranje tog elementa na početku nesortiranog skupa. Ako se ove operacije petljaju kroz sve elemente skupa, može se postići potpuno razvrstani skup. Algoritam segregira popis ključeva zakačen na dva različita dijela. Unutarnji popis ili popis pretplata imaju tendenciju da su već sortirani, što uključuje generiranje od lijevog elementa do krajnjeg desnog elementa i podbroj preostalih stavki koje se trebaju sortirati i koje naseljavaju predah popisa. U početku je sortirani podlistak neispunjen, a nesortirani podlistak je potpuni popis ključeva.

Kodirati:

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

Izlaz:

3. Umetanje vrsta

Umetanje razvrstavanja mehanizam za sortiranje provodi se izgradnjom sortiranog niza s jednom stavkom. elementi niza se uspoređuju na jedan način, a zatim preuređuju u određenom redoslijedu. Komponente niza se uspoređuju uzastopno sa svakim od elemenata i zatim poredaju istodobno određenim redoslijedom. Ovdje korištena analogija vrlo je slična organiziranju skupa karata.

Kodirati:

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

Izlaz:

4. Spajanje sortiranja

Vrsta spajanja djeluje na principu dijeljenja i osvaja algoritam. Ovdje je dani ulaz razdijeljen na dvije polovice, a spajane polovice se razvrstavaju i spajaju. U percepciji pytona, funkcija merge () koristi se za postizanje procesa spajanja. algoritam za vrstu umetanja je dolje naveden,

  • Spomenuti niz treba podijeliti na dva različita dijela i za to je određen medijan polja.
  • Razvrstavanje spajanja primjenjuje se u prvoj polovici podjele.
  • Tada je druga polovica također izložena istoj.
  • Konačno, nakon razvrstavanja, razdvojene polovice se spajaju.

Kodirati:

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)

Izlaz:

5. Skupa hrpa

Heap sorta je oblik tehnike sortiranja selekcije. Uključuje segregaciju zadanog ulaza kao razvrstane i nesvrstane elemente. Tada se algoritam na taj način petlja na nesvrstanu regiju, tako da će na svakoj petlji najveća vrijednost biti gurnuta u razvrstano područje. Taj će se postupak nastaviti u svim elementima u nesortiranom području.

Na danom popisu ulaza stvara se maksimalan skup. Posljednja vrijednost se mijenja više puta s prvom vrijednošću, a također se i raspon vrijednosti usporedno smanjuje za jedan. Taj se proces odvija sve dok se raspon ne smanji na 1.

Kodirati:

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

Izlaz:

6. Radix sortiranje

Radix vrsta sortiranja je tehnika sortiranja koja napreduje bez uspoređivanja unesenih elemenata. To se postiže generiranjem kante prema vrijednosti radixa za elemente koji uključuju više od jedne znamenke, a tehnika se primjenjuje na sve znamenke u elementu. Nazivaju se i kao vrsta kante. Ova tehnika sortiranja obično je prebrza u svom pogodnom okruženju.

Kodirati:

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)

Izlaz:

Zaključak

Tijekom određenog vremena, postojali su brojni algoritmi dizajnirani za sortiranje ulaznog skupa. Dizajnirani su s motivom postizanja bolje tehnike i optimizirane izvedbe u procesu sortiranja. Neke od najvažnijih raspravljamo gore. Iz python perspektive ovaj se jezik ističe vrlo fleksibilnim i postojanim jezikom za oblikovanje ovih algoritama.

Preporučeni članci

Ovo je Vodič za sortiranje algoritama u Pythonu. Ovdje ćemo raspravljati o uvođenju i top 6 algoritama za razvrstavanje u python-u, zajedno s njegovom implementacijom koda. Možete pogledati i sljedeće članke da biste saznali više -

  1. Obrtanje broja pomoću različitih načina u Pythonu
  2. Različite vrste algoritama usmjeravanja
  3. Vrste parcela u Matplotlibu na Pythonu
  4. Top 14 Tuplesa u Pythonu

Kategorija: