El algoritmo de clasificación rápida es un algoritmo de división y conquista que clasifica la secuencia dada en su lugar, lo que significa que no requiere almacenamiento adicional, ya que necesitamos en el orden de fusión.
La idea básica es dividir la secuencia (por conveniencia, diré matriz) en 2 subarreglos alrededor de un elemento (un elemento particular de la matriz dada) que se llama pivote, de modo que los elementos en un subarreglo inferior sean menores que el pivote. El elemento y los elementos en una sub-matriz superior son más altos que el elemento pivote.
[código]
clasificación rápida (A, p, q)
si (p <q)
entonces r = partición (A, p, q)
clasificación rápida (A, p, r-1)
clasificación rápida (A, r + 1, q)
[/código]
la llamada inicial típica es quicksort (A, 0, n) // n = longitud de la matriz
- ¿Qué tipo de algoritmo de localización utilizan generalmente los misiles de crucero?
- Dadas las coordenadas de 3 puntos, cómo encontrar el centro del círculo formado por estos puntos con alta precisión. Para lograr una alta precisión, debe haber algún proceso de división. ¿Hay alguna forma de hacerlo?
- ¿Puedo diseñar una estructura de datos tipo pila que haga popMin () en tiempo O (1)?
- ¿Por qué sigo fallando la introducción a los algoritmos en la escuela de posgrado?
- ¿Puedo aprender algoritmos en mis vacaciones de verano si doy 8-10 horas cada día?
[código]
partición (A, p, q)
x = A [p]
i = p
para j = p + 1 a q
si (A [j] <= x)
i = i + 1
intercambio (A [i], A [j])
intercambio (A [p], a [i])
regreso yo
[/código]
Explicación:
supongamos que la matriz es 7 11 14 6 9 4 3 12
Aquí x = 7 (el pivote)
ejecute el módulo de clasificación rápida de forma recursiva. y de forma similar, la matriz secundaria restante se ordenaría y, por lo tanto, toda la secuencia.
Análisis: El módulo de partición se ejecuta en tiempo lineal.
El peor análisis de caso es O (n ^ 2) pero si usamos una partición inteligente, entonces puede optimizarse.
El módulo de partición dado es bueno para una matriz que tiene elementos distintos y para entradas duplicadas, el algoritmo de partición original de Hoare es bueno.
Espero que esto ayude.