Implementación del código de ordenación rápida de Python

La clasificación rápida
es una mejora del algoritmo de clasificación de burbujas. Divida los datos que desee clasificar en dos partes independientes mediante la clasificación. Todos los datos de una parte son más pequeños que todos los datos de la otra parte. Luego, de acuerdo con este método, las dos partes de los datos se pueden clasificar rápidamente. Todo el proceso de clasificación puede ser recursivo, de modo que todos los datos se conviertan en una secuencia ordenada

1. Elija el valor de referencia: elija un elemento de la secuencia, llamado "pivote"
2. Segmentación: reordene la secuencia, todos los elementos menores que el valor de referencia se colocan delante de la referencia y todos los elementos más grandes que el valor de referencia se colocan delante del índice de referencia. Ponlo detrás del índice de referencia (el número igual al índice de referencia puede ir a cualquier lado). Una vez finalizada esta segmentación, se ha completado la ordenación del valor de referencia
3. Ordena recursivamente las subsecuencias: ordena recursivamente las subsecuencias de elementos menores que el valor de referencia y las subsecuencias de elementos mayores que el valor de referencia.

La condición de juicio para la recursividad al final es que el tamaño de la secuencia sea cero o uno, en este momento la secuencia obviamente ya está en orden.

Existen varios métodos específicos para seleccionar el valor de referencia, y este método de selección tiene un impacto decisivo en el rendimiento temporal de la clasificación.

def parttion(arr,low,high):
    # 最小元素索引
    i = (low-1)
    pivot = arr[high]

    for j in range(low,high):

        # 当前元素小于等于pivot
        if arr[j] <= pivot:

            i += 1
            arr[i],arr[j] = arr[j],arr[i]

    arr[i+1],arr[high] = arr[high],arr[i+1] 
    return ( i+1 )     


# arr[]  排序数组
# low   起始索引
# high  结束索引

# 快速排序排序函数
def quickSort(arr,low,high):
    if low < high:
        pi = parttion(arr,low,high)

        quickSort(arr,low,pi-1)
        quickSort(arr,pi+1,high)

arr = [10,7,9,1,5]
n = len(arr)
quickSort(arr,0,n-1)
print("排列后的数组:",arr)

Supongo que te gusta

Origin blog.csdn.net/weixin_45598506/article/details/113850649
Recomendado
Clasificación