Ordenamiento rápido en Python

Muhammad Waiz Khan 30 enero 2023
  1. ordenamiento rápido en Python usando el método numpy.sort()
  2. ordenamiento rápido en Python usando el método Series.sort_values() de la biblioteca Pandas
  3. Implementación de ordenamiento rápido en Python
Ordenamiento rápido en Python

Este tutorial explicará cómo implementar y aplicar el ordenamiento rápido en Python.

La ordenamiento rápido es un algoritmo de divide y vencerás. La ordenamiento rápido elige un elemento como pivote del array y luego dividel array alrededor del pivote seleccionado en submatrices colocando elementos más pequeños que el pivote en un array y elementos mayores que el pivote en otra matriz. Si el array contiene elementos duplicados, entonces los elementos iguales al pivote se pueden colocar en la tercera submatriz o en cualquiera de las dos submatrices, dependiendo de la implementación del algoritmo. El array se ordena mediante ordenamiento rápido clasificando las submatrices mediante llamadas recursivas.

Como el algoritmo de ordenamiento rápido ordena los elementos comparándolos, pertenece al algoritmo de clasificación de comparación.

ordenamiento rápido en Python usando el método numpy.sort()

El método numpy.sort(array, axis, kind) toma un array como entrada y devuelve la copia ordenada del array de entrada como salida. El parámetro array es el array que queremos ordenar, el axis es el que queremos ordenar el array, y el kind especifica el algoritmo que usará el método para ordenar el array, su valor predeterminado es ordenamiento rápido.

El siguiente código de ejemplo demuestra cómo usar el método numpy.sort() para ordenar el array usando la ordenamiento rápido 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)

Producción :

[1 2 3 3 5 6 7 8]

ordenamiento rápido en Python usando el método Series.sort_values() de la biblioteca Pandas

El método Series.sort_values(ascending, inplace, kind) de la biblioteca de Pandas toma una Series de Pandas como entrada y devuelve series ordenadas.

El valor predeterminado del argumento ascending es True, por lo que el método ordena la serie en orden ascendente. Si está configurado como False, la Series se ordenará en orden descendente. Si el argumento inplace se establece como True, los cambios se realizarán en la serie original; de lo contrario, se devolverá una copia ordenada de la entrada. El argumento kind determina qué método de algoritmo utilizará para ordenar la serie, y el método utiliza el algoritmo de ordenamiento rápido por defecto.

El siguiente código de ejemplo demuestra cómo se puede usar Series.sortvalues() para ordenar la serie en Python usando el algoritmo de ordenamiento rápido:

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)

Producción :

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

Implementación de ordenamiento rápido en Python

El tercer método puede ser implementar el algoritmo de ordenamiento rápido por nuestra cuenta en Python.

La siguiente implementación de código de la ordenamiento rápido dividel array en 3 subarrays, un subarray contiene elementos que son menores que el pivote, uno contiene elementos mayores que los pivotes y el tercer subarray contiene elementos iguales al pivote.

En cada llamada al método, obtendremos la posición ordenada del pivote, ya que separamos los valores menores y mayores que el pivote. Y mediante una llamada recursiva obtendrá el array ordenada completa.

El código de ejemplo a continuación demuestra cómo implementar el algoritmo de ordenamiento rápido explicado anteriormente 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

Artículo relacionado - Python Sort