J'ai écrit une note pour moi-même sur le tri par fusion.
marge_sort.py
def merge(A, left, mid, right):
L = []
for i in range(mid - left):
L.append(A[left + i])
L.append(1000) #Assurez-vous que le nombre est plus grand que le nombre à trier
R = []
for i in range(right - mid):
R.append(A[mid + i])
R.append(1000) #Assurez-vous que le nombre est plus grand que le nombre à trier
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]
Cette fois, vous pouvez trier les nombres inférieurs à 1000 dans l'ordre croissant J'ai défini 1000 de manière appropriée, donc si vous l'augmentez, vous pouvez trier des nombres encore plus grands. Je n'ai pas reçu le nombre total d'appels ...
Fusionner le tri en langage C Algorithme de tri et implémentation en Python [Unity] J'ai essayé de visualiser 12 types d'algorithmes de tri
Recommended Posts