Python-Programm für Merge Sort
Veröffentlicht: 2023-01-31Als Multi-Paradigma-Programmiersprache mit einem strukturierten, objektorientierten Designansatz und einer einfachen und übersichtlichen Syntax und Grammatik entwickelt sich Python schnell zur Sprache der Wahl für Programmierer, die an Projekten unterschiedlicher Komplexität und Größe arbeiten.
Python bietet eine modulare Bibliothek vorgefertigter Algorithmen, die es seinen Benutzern ermöglicht, verschiedene Operationen durchzuführen, die ihnen helfen können, ihre Aufgabe an und für sich zu erfüllen, oder als Schritt auf dem Weg zum Erreichen eines größeren, komplexeren Ziels dienen. Einer der beliebtesten Algorithmen dieser Art ist einer, der die Merge-Sort-Funktionalität ermöglicht.
Inhaltsverzeichnis
Was ist Merge Sort?
Es ist eine Allzweck-Sortiertechnik, die es Benutzern ermöglicht, einen zufälligen Datensatz jeder Art und aus jeder Quelle zu nehmen und ihn in sich wiederholende Phasen zu unterteilen, bis er schließlich in seine einzelnen Komponenten zerlegt wird – eine rekursive Technik, die allgemein als „ „Teile und herrsche“-Methode.
Der Algorithmus fügt dann die einzelnen Komponenten – wieder in sich wiederholenden Schritten – zusammen, sortiert sie aber auf jedem Schritt des Weges in eine vorher festgelegte, logische Reihenfolge, indem er den grundlegenden Vergleich und Austausch verwendet, bis die gesamte Datenreihe in der gewünschten logischen Reihenfolge wiederhergestellt ist .
Sehen Sie sich unsere anderen Data-Science-Kurse bei upGrad an.
Teile-und-herrsche-Technik
Nehmen Sie zum Beispiel einen zufälligen Datensatz von Buchstaben des Alphabets: N, H, V, B, Q, D, Z, R.
Schritt 1 : Der ursprüngliche Datensatz wird zunächst wie folgt in zwei Gruppen unterteilt:
N, H, V, B, Q, D, Z, R
Schritt 2 : Die beiden resultierenden Arrays werden wie folgt weiter unterteilt:
N, H V, B Q, D Z, R
Schritt 3 : Abschließend werden alle vier Arrays weiter ausgespuckt, bis die gesamte Datenreihe in ihre einzelnen Bestandteile zerlegt ist:
N H V B Q D Z R
Anschließend kehrt sich der Vorgang um und die einzelnen Datenpunkte beginnen nun schrittweise miteinander zu verschmelzen. Aber im Laufe dieses Zusammenführungsprozesses wird jedes Element in jedem Sub-Array bewertet und ausgetauscht, sodass sie sich in einer logischen Reihenfolge (alphabetische Reihenfolge) wie folgt sortieren:
Schritt 4 : Einzelne Elemente verschmelzen zu Paaren und tauschen nach Bedarf die Positionen, um die richtige Reihenfolge zu bilden:
H, N. B., V. D., Q. R., Z
Schritt 5 : Der rekursive Prozess des Zusammenführens und Sortierens wird mit der nächsten Iteration fortgesetzt:
B, H, N, V, D, Q, R, Z
Schritt 6 : Die gesamte Datenreihe wird schließlich in ihrer logischen alphabetischen Reihenfolge rekonstruiert:
B, D, H, N, Q, R, V, Z
Entdecken Sie unsere beliebten Data Science-Kurse
Executive Post Graduate Program in Data Science vom IIITB | Professional Certificate Program in Data Science für die Entscheidungsfindung in Unternehmen | Master of Science in Data Science von der University of Arizona |
Advanced Certificate Program in Data Science vom IIITB | Professional Certificate Program in Data Science und Business Analytics von der University of Maryland | Data Science-Kurse |
Merge-Sort-Implementierungen
Es gibt zwei Ansätze für die Implementierung von Merge Sort in Python. Der Top-Down-Ansatz und der Bottom-Up-Ansatz.
Top-Down-Ansatz:
Der häufiger verwendete Top-Down-Ansatz ist der oben beschriebene. Es dauert länger und verbraucht mehr Speicher und ist daher bei der Arbeit mit kleineren Datensätzen ineffizient. Es ist jedoch viel zuverlässiger, insbesondere wenn es auf große Datensätze angewendet wird.
Lesen Sie unsere beliebten Data Science-Artikel
Data Science Career Path: Ein umfassender Karriereleitfaden | Data Science Karrierewachstum: Die Zukunft der Arbeit ist da | Warum ist Data Science wichtig? 8 Wege, wie Data Science dem Unternehmen einen Mehrwert bringt |
Relevanz von Data Science für Manager | Der ultimative Data Science Spickzettel, den jeder Data Scientist haben sollte | Die 6 wichtigsten Gründe, warum Sie Data Scientist werden sollten |
Ein Tag im Leben von Data Scientists: Was machen sie? | Mythos gesprengt: Data Science braucht keine Codierung | Business Intelligence vs. Data Science: Was sind die Unterschiede? |
Code eingeben:
def merge_sort (inp_arr):
Größe = Länge (inp_arr)
wenn Größe > 1:
Mitte = Größe // 2
left_arr = inp_arr(:middle)
right_arr = inp_arr(middle:)
merge_sort(left_arr)
merge _sort(right_arr)
ich = 0
j = 0
k = 0
(Wobei i und j die Iteratoren zum Durchlaufen der linken bzw. rechten Hälfte der Datenreihe sind und k der Iterator der gesamten Datenreihe ist).
left_size = len(left_arr)
right_size = len(right_arr)
während i < left_size und j < right size:
if left_arr(i) < right_arr (j):
inp_arr(k) – left_arr(i)
ich >= 1
anders:
inp_arr(k) = right_arr (j)
j + = 1
k+= 1
während ich < left_size:
inp_arr (k) = left_arr (i)
ich += 1
k+= 1
während j < right_size:
inp_arr (k) = rechts_arr (j)
j + = 1
k+= 1
inp_arr = (N, H, V, B, Q, D, Z, R)
print(:Eingabearray:\n”)
print(inp_arr)
merge_sort (inp_arr)
print("Sortiertes Array:\n")
drucken (inp_arr)
Ausgabe:
Eingangsarray: N, H, V, B, Q, D, Z, R
Ausgangsarray: B, D, H, N, Q, R, V, Z
Bottom-Up-Ansatz:
Der Bottom-up-Ansatz ist schneller, verbraucht weniger Speicher und arbeitet effizient mit kleineren Datasets, kann aber bei der Arbeit mit großen Datasets auf Probleme stoßen. Es wird daher seltener verwendet.
Code eingeben:
def merge(links, rechts):
Ergebnis = [] x, y = 0, 0
für k in range(0, len(links) + len(rechts)):
if i == len(left): # if am Ende der 1. Hälfte,
result.append(right[j]) # Addiere alle Werte der 2. Hälfte
j + = 1
elif j == len(right): # if am Ende der 2. Hälfte,
result.append(left[x]) # addiere alle Werte der 1. Hälfte
ich += 1
elif rechts[j] < links[i]:
result.append(right[j])
j + = 1
anders:
result.append(links[i])
ich += 1
Ergebnis zurückgeben
def mergesort(ar_list):
Länge = Länge (ar_list)
Größe = 1
während Größe < Länge:
size+=size # wird wie beschrieben bei 2 initialisiert
für pos in range(0, length, size):
Start = Pos
mid = pos + int (Größe / 2)
Ende = Position + Größe
left = ar_list[ start : mid ] right = ar_list[ mid : end ]
ar_list[start:end] = merge(links, rechts)
gib ar_list zurück
ar_list = [N, H, V, B, Q, D, Z, R] print(mergesort(ar_list))
Ausgabe:
Eingangsarray: N, H, V, B, Q, D, Z, R
Ausgangsarray: B, D, H, N, Q, R, V, Z
Die Merge-Sort-Implementierung wird auf komplexere, reale Datensätze angewendet
Wenden wir den Top-Down-Ansatz auf vier zufällige Geländewagen in Indien an:
Marke | Modell | Ex-Showroom-Preis in Rs Crore |
Jeep | Wrangler | 0,58 |
Ford | Bemühen | 0,35 |
Jaguar Landrover | Range Rover Sport | 2.42 |
Mercedes Benz | G-Klasse | 1,76 |
Code eingeben:
Klasse Auto:
def __init__(selbst, Marke, Modell, Preis):
self.marke = Marke
self.model = Modell
self.price = Preis
def __str__(selbst):
return str.format("Marke: {}, Modell: {}, Preis: {}", self.brand,
selbst.Modell, selbst.Preis)
def merge(list1, i, j, k, comp_fun):
left_copy = list1[i:k + 1]
r_sublist = list1[k+1:r+1]
left_copy_index = 0
j_sublist_index = 0
sortierter_index = i
while left_copy_index < len(left_copy) undj_sublist_index <
len(j_sublist):
if comp_fun(left_copy[left_copy_index], j_sublist[j_sublist_index]):
list1[sortierter_index] = linke_kopie[linke_kopie_index]
left_copy_index = left_copy_index + 1
sonst :
list1[sortierter_index] = j_sublist[j_sublist_index]
j_sublist_index = j_sublist_index + 1
Sortierindex = Sortierindex + 1
while left_copy_index < len(left_copy):
list1[sortierter_index] = linke_kopie[linke_kopie_index]
left_copy_index = left_copy_index + 1
Sortierindex = Sortierindex + 1
while j_sublist_index < len(j_sublist):
list1[sortierter_index] = j_sublist[j_sublist_index]
j_sublist_index = j_sublist_index + 1
Sortierindex = Sortierindex + 1
def merge_sort(list1, i, j, comp_fun):
wenn i >= j:
Rückkehr
k = (i + j)//2
merge_sort(list1, i, k, comp_fun)
merge_sort(list1, k + 1, j, comp_fun)
merge(list1,i,j,k,comp_fun)
Auto1 = Auto("Jeep", "Wrangler", 0,58)
auto2 = Auto („Ford“, „Endeavour“, 0,35)
auto3 = Auto („Jaguar Land Rover“, „Range Rover Sport“, 1,76)
car4 = Auto („Mercedes Benz“, „G-Klasse“, 2.42)
list1 = [auto1, auto2, auto3, auto4]
merge_sort(list1, 0, len(list1) -1, lambda autoA, autoB: autoA.marke < autoB.marke)
drucken („Autos sortiert nach Marke:“)
für Auto inListe1:
Druck (Auto)
drucken ()
merge_sort(list1, 0, len(list1) -1, lambda carA, carB: carA.price< carB.price)
print („Autos sortiert nach Preis:“)
für Auto inListe1:
Druck (Auto)
Ausgabe:
Autos sortiert nach Marke:
Ford Endeavor
Jaguar Land Rover Range Rover Sport
Jeep Wrangler
Mercedes Benz G-Klasse
Autos sortiert nach Preis:
Ford Endeavor
Jeep Wrangler
Jaguar Landrover Range Rover
Mercedes Benz G-Klasse
Mit dem Professional Certificate in Data Science and Business Analytics von upGrad der University of Maryland können Sie sowohl theoretische als auch praktische Aspekte von Python erlernen. Dieser Kurs hilft Ihnen, Python von Grund auf neu zu lernen. Auch wenn Sie neu im Programmieren und Programmieren sind, bietet Ihnen upGrad einen zweiwöchigen Vorbereitungskurs, damit Sie sich die Grundlagen des Programmierens aneignen können. Sie lernen verschiedene Tools wie Python, SQL kennen, während Sie an mehreren Branchenprojekten arbeiten.