Einführung in Sortieralgorithmen in Python

Das Sortieren ist ein Vorgang, bei dem die Elemente in einer bestimmten Reihenfolge neu angeordnet werden, damit eine geeignete Verarbeitung darauf angewendet werden kann. Die Sortierung wird notwendig, da in den meisten Fällen die aus der Quelle abgerufenen Daten in einer schlechten Reihenfolge bleiben. Um dies zu triumphieren, wurden im Laufe der Jahre mehrere Sortieralgorithmen entwickelt. Lassen Sie uns kurz einige der Schlüsselsortierungsalgorithmen diskutieren, die bei der Python-Programmierung verwendet werden.

Top 6 Sortieralgorithmen in Python

Nachfolgend sind die verschiedenen Sortieralgorithmen für Python aufgeführt:

1. Bubble Sort

Die Blasensortierung gehört zu den am häufigsten verwendeten Sortiertechniken. Ausgehend von den ersten beiden Elementpaaren wird eine Reihe von Elementen sortiert, indem jedes benachbarte Elementpaar verglichen wird. Wenn also eine falsch ausgerichtete Reihenfolge hergestellt wird, findet ein Austausch von Elementen statt. Bis zum letzten Element in der Eingabemenge wird der obige Prozess spürbar fortgesetzt. Um den Algorithmus zu optimieren, müssen Sie ihn stoppen, nachdem die Sortierung abgeschlossen ist. Wie können wir möglicherweise feststellen, dass die Sortierung abgeschlossen ist? Dies kann festgestellt werden, wenn alle angegebenen Elemente in Ordnung sind. Wenn also Variablen ausgetauscht werden, kann ein Flag beibehalten werden, um die erneute Ausführung des Sortierprozesses zu bestimmen. Das Flag sollte auf false gesetzt werden, wenn keine anderen Swaps benötigt werden.

Code:

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

Ausgabe:

2. Auswahl sortieren

Die Auswahlsortierung gehört zu den am häufigsten verwendeten Sortiertechniken. Diese Technik beinhaltet das Finden des kleinsten oder kleinsten Elements aus der unsortierten Menge und das Positionieren dieses Elements am Anfang der unsortierten Menge. Durch Schleifen dieser Operationen über alle Elemente in der Menge kann eine vollständig sortierte Menge erreicht werden. Der Algorithmus trennt die an zwei verschiedene Teile gekoppelte Schlüsselliste. Die innere Liste oder die Abonnementliste sind in der Regel bereits sortiert, was das Generieren von Elementen ganz links bis ganz rechts und die Unterliste der ausstehenden zu sortierenden Elemente umfasst, die sich innerhalb der Liste befinden. Die sortierte Unterliste ist zunächst nicht gefüllt und die unsortierte Unterliste ist die vollständige Schlüsselliste.

Code:

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

Ausgabe:

3. Insertion Sort

Bei der Einfügesortierung wird der Sortiermechanismus ausgeführt, indem ein sortiertes Array mit jeweils einem Element erstellt wird. Die Elemente des Arrays werden nacheinander verglichen und anschließend in einer bestimmten Reihenfolge neu angeordnet. Die Komponenten des Arrays werden nacheinander mit jedem der Elemente verglichen und dann gleichzeitig in einer bestimmten Reihenfolge sortiert. Die hier verwendete Analogie ist der Anordnung eines Kartensatzes sehr ähnlich.

Code:

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

Ausgabe:

4. Sortieren zusammenführen

Die Merge-Sortierung funktioniert nach dem Prinzip des Divide- und Conquers-Algorithmus. Hier wird die angegebene Eingabe in zwei Hälften gespleißt und die gespleißenen Hälften werden sortiert und dann zusammengeführt. In der Python-Wahrnehmung wird die Funktion merge () verwendet, um den Zusammenführungsprozess durchzuführen. Der Algorithmus für die Einfügesortierung ist wie folgt:

  • Das erwähnte Array muss in zwei verschiedene Teile aufgeteilt werden und der Median des Arrays wird dafür bestimmt.
  • Die Zusammenführungssortierung wird in der ersten Hälfte der Aufteilung angewendet.
  • Dann ist auch die zweite Hälfte derselben ausgesetzt.
  • Zuletzt werden nach dem Sortieren die getrennten Hälften zusammengeführt.

Code:

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)

Ausgabe:

5. Heap-Sortierung

Die Heap-Sortierung ist eine Form der Auswahlsortiertechnik. Dabei wird die angegebene Eingabe in sortierte und nicht sortierte Elemente unterteilt. Dann durchläuft der Algorithmus die nicht sortierte Region in einer solchen Weise, dass in jeder Schleife der größte Wert in die sortierte Region verschoben wird. Dieser Vorgang wird über alle Elemente in der unsortierten Region fortgesetzt.

Aus der angegebenen Eingabeliste wird ein maximaler Heap erstellt. Der letzte Wert wird dann wiederholt gegen den ersten Wert ausgetauscht und auch der Wertebereich wird vergleichsweise um eins verringert. Dieser Vorgang findet statt, bis der Bereich auf 1 schrumpft.

Code:

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

Ausgabe:

6. Radix Sort

Die Radix-Sortierung ist eine Sortiertechnik, die fortschreitet, ohne die eingegebenen Elemente zu vergleichen. Dies wird erreicht, indem ein Bucket entsprechend dem Radix-Wert für Elemente mit mehr als einer Ziffer erstellt wird, wobei die Technik für alle Ziffern im Element angewendet wird. Es wird auch als Eimersortierung bezeichnet. Diese Sortiertechnik neigt dazu, in ihren geeigneten Umgebungen zu schnell zu sein.

Code:

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)

Ausgabe:

Fazit

Im Laufe der Zeit gab es zahlreiche Algorithmen zum Sortieren des Eingabesatzes. Sie wurden unter dem Motto „Bessere Technik und optimierte Ausführung im Sortierprozess“ entwickelt. Einige der wichtigsten sind oben besprochen. Aus Python-Sicht ist diese Sprache eine sehr flexible und beständige Sprache, um diese Algorithmen zu entwickeln.

Empfohlene Artikel

Dies ist eine Anleitung zum Sortieren von Algorithmen in Python. Hier diskutieren wir die Einführung und die Top-6-Sortieralgorithmen in Python zusammen mit der Code-Implementierung. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren.

  1. Umkehren der Nummer mit verschiedenen Methoden in Python
  2. Verschiedene Arten von Routing-Algorithmen
  3. Diagrammtypen in Matplotlib in Python
  4. Top 14 Tuples in Python