Ich habe mir eine Notiz über das Sortieren von Zusammenführungen geschrieben.
marge_sort.py
def merge(A, left, mid, right):
L = []
for i in range(mid - left):
L.append(A[left + i])
L.append(1000) #Stellen Sie sicher, dass die Nummer größer als die zu sortierende Nummer ist
R = []
for i in range(right - mid):
R.append(A[mid + i])
R.append(1000) #Stellen Sie sicher, dass die Nummer größer als die zu sortierende Nummer ist
i = j = 0
for k in range(left, right):
if L[i] <= R[j]:
A[k] = L[i]
i += 1
else:
A[k] = R[j]
j += 1
def merge_sort(A, left, right):
if left+1 < right:
mid = (left + right) // 2
merge_sort(A, left, mid)
merge_sort(A, mid, right)
merge(A, left, mid, right)
return A
print(merge_sort([3, 1, 10, 2.5, 11, 3, 21, 4, -1], 0, 9))
# [-1, 1, 2.5, 3, 3, 4, 10, 11, 21]
Dieses Mal können Sie Zahlen unter 1000 in aufsteigender Reihenfolge sortieren Ich habe 1000 entsprechend eingestellt. Wenn Sie es also erhöhen, können Sie noch größere Zahlen sortieren. Ich habe nicht die Gesamtzahl der Anrufe erhalten ...
Sortierung in C-Sprache zusammenführen Sortieralgorithmus und Implementierung in Python [Unity] Ich habe versucht, 12 Arten von Sortieralgorithmen zu visualisieren
Recommended Posts