Tri rapide en Python

Muhammad Waiz Khan 30 janvier 2023
  1. Tri rapide en Python avec la méthode numpy.sort()
  2. Tri rapide en Python en utilisant la méthode Series.sort_values() de la bibliothèque Pandas
  3. Implémentation de l’algorithme de tri rapide en Python
Tri rapide en Python

Ce tutoriel explique comment mettre en œuvre et appliquer l’algorithme de tri rapideen Python.

Le tri rapide est un algorithme de division et de conquête. Le tri rapide sélectionne un élément comme pivot dans le tableau et ensuite divise le tableau autour du pivot sélectionné en sous-tableaux en mettant les éléments plus petits que le pivot dans un tableau et les éléments plus grands que le pivot dans un autre tableau. Si le tableau contient des éléments en double, alors les éléments égaux au pivot peuvent être placés dans le troisième sous-tableau ou dans l’un des deux sous-tableaux selon l’implémentation de l’algorithme. Le tableau est trié par tri rapide en triant les sous-tableaux par appel récursif.

Comme l’algorithme de tri rapide trie les éléments en les comparant, il appartient à l’algorithme de tri par comparaison.

Tri rapide en Python avec la méthode numpy.sort()

La méthode numpy.sort(array, axis, kind) prend un tableau en entrée et retourne la copie triée du tableau en entrée en sortie. Le paramètre array est le tableau que nous voulons trier, le axis est le long duquel nous voulons trier le tableau, et le kind spécifie l’algorithme que la méthode utilisera pour trier le tableau, sa valeur par défaut est rapide Trier.

L’exemple de code ci-dessous montre comment utiliser la méthode numpy.sort() pour trier le tableau en utilisant le tri rapide en Python.

import numpy as np

a = np.array([2, 3, 6, 5, 7, 8, 3, 1])

sorted_a = np.sort(a, kind="quick sort")
print(sorted_a)

Production :

[1 2 3 3 5 6 7 8]

Tri rapide en Python en utilisant la méthode Series.sort_values() de la bibliothèque Pandas

La méthode Series.sort_values(ascending, inplace, kind) de la bibliothèque Pandas prend une Series de Pandas comme entrée et retourne des séries triées.

La valeur par défaut de l’argument ascending est True, donc la méthode trie les séries par ordre croissant. Si elle est définie comme False, les Series seront triées par ordre décroissant. Si l’argument inplace est défini comme True, les changements seront faits dans la série originale ; sinon, une copie triée de l’entrée sera retournée. L’argument kind détermine la méthode d’algorithme qui sera utilisée pour trier les séries, et la méthode utilise par défaut l’algorithme de tri rapide.

L’exemple de code ci-dessous montre comment la fonction Series.sortvalues() peut être utilisée pour trier les séries en Python en utilisant l’algorithme de tri rapide :

import pandas as pd

s = pd.Series([1, 2, 4, 2, 7, 5, 3, 2, 6, 8])

s.sort_values(inplace=True, kind="quick sort")
print(s)

Production :

0    1
1    2
3    2
7    2
6    3
2    4
5    5
8    6
4    7
9    8
dtype: int64

Implémentation de l’algorithme de tri rapide en Python

La troisième méthode peut être d’implémenter l’algorithme de tri rapide par nous-mêmes en Python.

L’implémentation suivante du code de tri rapide divise le tableau en 3 sous-tableaux, un sous-tableau contient des éléments inférieurs au pivot, un autre contient des éléments supérieurs aux pivots, et le troisième sous-tableau contient des éléments égaux au pivot.

À chaque appel de la méthode, nous obtiendrons la position triée du pivot, car nous séparons les valeurs inférieures et supérieures au pivot. Et par appel récursif, nous obtiendrons le tableau trié complet.

L’exemple de code ci-dessous montre comment implémenter l’algorithme de tri rapide expliqué ci-dessus en Python :

def sort(array):

    left = []
    equal = []
    right = []

    if len(array) > 1:
        pivot = array[0]
        for x in array:
            if x < pivot:
                left.append(x)
            elif x == pivot:
                equal.append(x)
            elif x > pivot:
                greater.append(x)

        return (
            sort(left) + equal + sort(greater)
        )  # recursive calling of the sort() function

    else:  # return the array, when it contains only 1 element
        return array

Article connexe - Python Sort