Trier en Python. Pensons ensuite à l'algorithme.

Trier par méthode, fonction intégrée

Tout d'abord, pensez à trier la liste suivante.

data = [5, 3, 2, 4, 1, 6]

Il existe deux façons de trier les types de liste par ordre croissant ou décroissant en Python: sort () et sorted (). --List type method sort (): Trie la liste elle-même --Fonction intégrée triée (): renvoie une liste triée en tant que nouvelle valeur de retour

Méthode de type liste sort ()

Réécrivez la liste d'origine elle-même.

data.sort()
print(data)
# [1, 2, 3, 4, 5, 6]

La valeur par défaut est le tri croissant. Définissez l'argument reverse sur True pour trier par ordre décroissant.

data.sort(reverse = True)
print(data)
# [6, 5, 4, 3, 2, 1]

Notez que sort () renvoie None.

x = data.sort()
print(x)
# None

Fonction intégrée triée ()

Si vous spécifiez la liste que vous souhaitez trier dans l'argument, une nouvelle liste triée est générée et renvoyée en tant que valeur de retour.

new_data1 = sorted(data)
print(new_data1)
# [1, 2, 3, 4, 5, 6]

Comme sort (), sorted () est par défaut dans l'ordre croissant. Définissez l'argument reverse sur True pour trier par ordre décroissant.

new_data2 = sorted(data, reverse = True)
print(new_data2)
# [6, 5, 4, 3, 2, 1]

Algorithme de tri

Résumons les trois algorithmes de tri. Je me fiche de la vitesse, de l'utilisation de la mémoire, etc. car je ne les regarde que tous ensemble. La valeur par défaut est l'ordre croissant, et en changeant en commentaire, il devient l'ordre décroissant.

Algorithme de tri de réflexion

Tri à bulles

Il répète la comparaison de deux valeurs adjacentes et le tri selon les conditions.

bubble_sort


for i in range(len(data)):
    for j in range(len(data) - 1):
        if data[j] > data[j+1]: # data[j] < data[j+1]
            data[j], data[j+1] = data[j+1], data[j]
print(data)
# [1, 2, 3, 4, 5, 6]

Insérer un tri

Placez (insérez) la cible dans la position appropriée pour les données alignées. Cette fois, la recherche de 2 minutes n'est pas utilisée.

insert_sort


for i in range(1, len(data)):
    j = i - 1
    target = data[i]
    while data[j] > target and j >= 0: # data[j] < target
        data[j + 1] = data[j]
        j -= 1
    data[j + 1] = target
print(data)
# [1, 2, 3, 4, 5, 6]

Tri par fusion

Divisez la liste en unités plus petites, comparez les débuts des deux listes et combinez-les en une seule.

merge_sort


import math

def merge(x,y):
    m = []
    i = 0
    while i < len(x):
        i += 1
        j = 1
        while j < len(x):
            if x[j-1] > x[j]: # x[j-1] < x[j]
                x[j-1] , x[j] = x[j] , x[j-1]
            j += 1
    i = 0
    while i < len(y):
        i += 1
        j = 1
        while j < len(x):
            if x[j-1] > x[j]: # x[j-1] < x[j]
                x[j-1] , x[j] = x[j] , x[j-1]
            j += 1

    while x != [] and y != []:
        if x[0] < y[0]: # x[0] > y[0]
            m.append(x.pop(0))
        else:
            m.append(y.pop(0))
    if x == []:
        m += y
    else:
        m += x
    return m

data=[7,4,2,8,1,5,3,9,6]
n = 0
i = math.log2(len(data))
while n < i+1:
    tmp = []
    k=0
    while k < len(data):
        tmp = tmp
        m=merge(data[k:k+2**n],data[k+2**n:k+2**(n+1)])
        tmp += m
        k += 2**(n+1)
    data.clear()
    data += tmp
    n += n+1

print(data)
# [1, 2, 3, 4, 5, 6]

À la fin

Comme il s'agit du premier article de Qiita, je pense qu'il y a de nombreux points qui ne peuvent pas être atteints, alors veuillez le souligner. Les types de bulles et d'insertions étaient relativement rapides, mais les tris par fusion prenaient un certain temps.

Recommended Posts

Trier en Python. Pensons ensuite à l'algorithme.
Implémentation de l'algorithme de "Algorithm Picture Book" en Python3 (Bubble Sort)
Implémentation de l'algorithme «Algorithm Picture Book» en Python3 (tri sélectif)
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Analysons le journal de validation git en Python!
Pour remplacer dynamiquement la méthode suivante en python
Pensez aux recherches de priorité de profondeur et de priorité de largeur en Python
À propos de la différence entre "==" et "is" en python
Un mémo que j'ai écrit un tri de fusion en Python
Pensez à créer un environnement Python 3 dans un environnement Mac
[Note] À propos du rôle du trait de soulignement "_" en Python
[Python] Pensez sérieusement à la méthode gagnante M-1.
Tri à bulles en Python
Algorithme génétique en python
Next Python en langage C
Algorithme en Python (méthode Bellman-Ford, Bellman-Ford)
Tri personnalisé en Python3
À propos de __all__ en python
Algorithme en Python (Dijkstra)
Réfléchissez à la programmation de Python sur votre iPad
Informations de base Écrire le problème d'algorithme de l'automne 2018 en Python
Pensez à la nouvelle génération de Rack et WSGI
Utilisons les données ouvertes de "Mamebus" en Python
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
Un mémorandum sur la mise en œuvre des recommandations en Python
Voyons comment utiliser def en python
Trouver des erreurs en Python
Algorithme en Python (jugement premier)
Trier naturellement le chemin en Python
À propos du module Python venv
À propos de la fonction enumerate (python)
Tri décroissant avec mongodb en python
Reproduire la méthode de division mutuelle euclidienne en Python
Algorithme en Python (dichotomie)
Implémenter l'algorithme de Dijkstra en python
À propos des fonctionnalités de Python
Trouvons le rapport de circonférence avec Python
À propos de "for _ in range ():" de python
Trier par date en python
À propos de Python sort () et reverse ()
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Algorithme en Python (recherche de priorité de largeur, bfs)
Avertissement de tri dans la fonction pd.concat
Obtenir l'API arXiv en Python
Ce que les débutants pensent de la programmation en 2016
Pensez au problème de changement minimum
Algorithme de tri et implémentation en Python
Python dans le navigateur: la recommandation de Brython
Lançons "python -m antigravity" en python
Enregistrez le fichier binaire en Python
Frappez l'API Sesami en Python
[Python] Réduisons le nombre d'éléments dans le résultat dans le fonctionnement de l'ensemble
Réfléchissez aux raisons pour lesquelles Kubernetes est décrit comme «Linux dans le monde du cloud»
Obtenez le chemin du bureau en Python
[Python] Écrivons brièvement la notation d'inclusion
À propos de Python et Cython dtype
[Python] Qu'est-ce que @? (À propos des décorateurs)