Merge Sort ist ein klassischer Sortieralgorithmus. Seine Kernidee besteht darin, das zu sortierende Array in mehrere Unterarrays aufzuteilen, diese Unterarrays zu sortieren und schließlich die sortierten Unterarrays zu einem geordneten Array zusammenzuführen. Merge Sort ist ein relativ effizienter Sortieralgorithmus mit einer Zeitkomplexität von O(nlogn).
In diesem Artikel erklären wir, wie man die Zusammenführungssortierung in Python implementiert.
Die Idee, die Zusammenführungssortierung zu implementieren, besteht aus zwei Teilen, nämlich Teilen und Erobern und Zusammenführen. Die spezifischen Implementierungsschritte sind wie folgt:
1) Teilen Sie das zu sortierende Array weiterhin in zwei Teile und sortieren Sie den linken und rechten Teil rekursiv.
2) Führen Sie die sortierten linken und rechten Teile zu einem geordneten Array zusammen.
def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left_arr = merge_sort(arr[:mid]) right_arr = merge_sort(arr[mid:]) return merge(left_arr, right_arr)
def merge(left_arr, right_arr): i, j = 0, 0 result = [] while i < len(left_arr) and j < len(right_arr): if left_arr[i] < right_arr[j]: result.append(left_arr[i]) i += 1 else: result.append(right_arr[j]) j += 1 result += left_arr[i:] result += right_arr[j:] return result
Vollständiger Code
def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left_arr = merge_sort(arr[:mid]) right_arr = merge_sort(arr[mid:]) return merge(left_arr, right_arr) def merge(left_arr, right_arr): i, j = 0, 0 result = [] while i < len(left_arr) and j < len(right_arr): if left_arr[i] < right_arr[j]: result.append(left_arr[i]) i += 1 else: result.append(right_arr[j]) j += 1 result += left_arr[i:] result += right_arr[j:] return result
Testen
arr = [5, 3, 8, 6, 4, 7, 2, 1] print(merge_sort(arr))
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Zusammenführungssortierung mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!