Hable con el algoritmo de clasificación rápida de la otra parte (selección rápida)

A veces, pienso en tener los libros rojos de algoritmos hace tres o cuatro años, y siento que esta es mi creencia, y me siento muy feliz, y tengo confianza en la programación. Pero lo olvidarás después de leerlo y no podrás recordar nada.

Ahora imagínense, lo he visto muchas veces, y escuché a mucha gente decirlo, y ahora lo olvidé. Bastante indefenso.

Me desperté temprano un día y escuché el tipo rápido .

La idea básica:

En una secuencia, solo hay números enteros, 8, 2, 5, 7, 4

El primer paso es elegir un punto de referencia, como el primero, 8 (como elija, también puede optimizar, y la optimización no afecta la idea del algoritmo)

El segundo paso es dejar la posición de 8, porque tenemos que encontrar la posición de orden correcta en la secuencia de 8 (debido a que se selecciona la primera posición, se puede comparar desde el final hacia el frente, y no se repetirá)

El tercer paso es comparar el número en la cola con 8, el pequeño se coloca a la izquierda y el grande se coloca a la derecha (el formulario de operación es)
3.1 -> Si comienza desde la derecha (repitiendo desde la izquierda, será un poco confuso), el subíndice de la matriz va al último dígito, 4 <8, luego 4 se llena en el espacio, y la secuencia es (?) en este momento.
Respuesta: 4257 ()
3.2- -> El subíndice de la matriz va del penúltimo lugar, 7 <8, no se mueva, ya está en la izquierda. Cual es la secuencia?
La respuesta es 4257 ()

Continúe en orden y luego podrá escribirlo.
La secuencia secuencial es 5 <8, 4257 ()
2 <8, 4257 ()
4 <8, 4257 () ha
alcanzado la primera posición,
lo que indica que se ha encontrado la posición de secuencia de 8, que es la última. La secuencia es
42578

El tercer paso, la operación completa el
cuarto paso, continúe seleccionando el primer lugar, 4 como punto de referencia, repita el tercer paso, la secuencia es
juzgar si se ha comparado, 8 saltos, 7> 4, no se mueva, la secuencia es () 2578
5> 4 no se mueve, la secuencia es () 2578
2 <4, intercambio, 2 () 578, ha llegado al frente, lo que indica que se ha encontrado la posición de secuencia de 4, que es la segunda
24578

El quinto paso, elija seleccionar el siguiente número base en orden, 2, el procesamiento antes del bucle

Ésta es la idea básica.

La extensión es de selección rápida .
Seleccione el número Kth en esta secuencia (en orden, el número en la fila)

Escenario: Por ejemplo, en la secuencia 8,2,5,7,4 anterior, quiero encontrar el tercer número, de pequeño a grande.
Todos conocen la respuesta, debe considerarse como un
pensamiento de cinco : después de clasificar el valor de línea de base, el lado izquierdo es más pequeño que él, incluso si el desorden no es importante, usted sabe en qué lugar se encuentra.
Entonces, encontrar el número k-ésimo es encontrar el número de referencia que debería estar en la posición donde hay números k-1 al frente.

El proceso de búsqueda es el siguiente: el
primer paso es seguir el orden de clasificación rápido y elegir un número de referencia (la elección del número de referencia aún se puede optimizar).
Seguimos eligiendo 8. Antes de aprender de:
Significa que Se encuentra la posición de secuencia de 8, y es la última. La secuencia es el segundo paso de
42578
, que compara el número de dígitos de 8 con el número de dígitos objetivo.
El objetivo de comparación es 3 <5, por lo que el lado derecho del número de referencia se descarta y los primeros cuatro dígitos se ordenan rápidamente. (Busque el tercer lugar en esta secuencia ( por favor, comprenda aquí )) La
secuencia restante es el
tercer paso de 4257 , elija un número base, si aún elige 4 desde el principio,
después de la comparación, aprenda de antes:
explique la secuencia de 4 Se encuentra la ubicación, es la segunda. La secuencia es el cuarto paso de
2457.
Compare los 4 dígitos con los dígitos objetivo y
compare el objetivo, 3> 2, así que descarte el lado izquierdo del número de referencia y ordene rápidamente a partir de los dos dígitos siguientes.
(Busque el primer lugar en esta secuencia (3-2 = 1)) (
por favor, comprenda aquí) el quinto paso, 57, aún elija el comienzo, 5, compare desde el último lugar, 7> 5, no se mueva, es el primero Un número
indica que se ha encontrado la posición de secuencia de 5, que es el primero. La secuencia es
57

                此刻就快速选到了第三位的数字就是5,结束。

                这样我们就描述完了快速排序算法的思想,也顺道延伸了一下快速选择。

                有缘下次再见。

Supongo que te gusta

Origin blog.51cto.com/10725691/2639843
Recomendado
Clasificación