Un mémo que j'ai écrit un tri de fusion en Python

J'ai écrit une note pour moi-même sur le tri par fusion.

Qu'est-ce que le tri par fusion

code

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

référence

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

Un mémo que j'ai écrit un tri de fusion en Python
Lors de l'écriture d'un programme en Python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Un mémo que j'ai écrit un tri rapide en Python
Tri à bulles en Python
[Python] Mémo sur les fonctions
[Mémo] Tri de liste Python3
[Python] Mémo sur les erreurs
Analyse de données en Python: une note sur line_profiler
Pensez à créer un environnement Python 3 dans un environnement Mac
Tri personnalisé en Python3
Trier les éléments de la liste dans l'ordre spécifié en Python
À propos de __all__ en python
[Python] Manipulation d'éléments dans une liste (tableau) [Trier]
Trier en Python. Pensons ensuite à l'algorithme.
Écrire sur la création d'un environnement Python pour l'écriture de Qiita Qiita
Fusion de la mise en œuvre du tri / analyse du montant du calcul et de l'expérimentation en Python
Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Un mémo sur la création d'une application Django (Python) avec Docker
Un mémorandum sur la mise en œuvre des recommandations en Python
Prendre une capture d'écran en Python
Créer une fonction en Python
Trier naturellement le chemin en Python
Tri décroissant avec mongodb en python
Mémorandum sur la corrélation [Python]
Créer un bookmarklet en Python
Un mémorandum sur le simulacre de Python
Dessinez un cœur en Python
À propos de "for _ in range ():" de python
Trier par date en python
À propos de Python sort () et reverse ()
Une note sur [python] __debug__
Une histoire sur la façon de spécifier un chemin relatif en python.
Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
Comment développer dans un environnement virtuel Python [Memo]
Une histoire sur la tentative d'implémentation de variables privées en Python.
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Ecrire une dichotomie en Python
[python] Gérer les fonctions dans une liste
Appuyez sur une commande en Python (Windows)
Nouveau dans les dictionnaires de fusion python3.9
Créer un conteneur DI avec Python
Python: une note sur les classes 1 "Résumé"
Dessinez une matrice de diagramme de dispersion avec python
Remarque à propos de get_scorer de sklearn
ABC166 en Python A ~ C problème
À propos de Python et Cython dtype
Ecrire des algorithmes A * (A-star) en Python
Trier les gros fichiers texte en Python
Résoudre ABC036 A ~ C avec Python
Obtenir, publier un mémo de communication en Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
J'ai essayé d'étudier le processus avec Python
[Python] Mémo de création de l'outil de grattage
Implémentation d'un algorithme simple en Python 2