Cómo utilizar el método de partición para la clasificación rápida en java

La parte más difícil de la técnica de Java es la ordenación rápida dividir método. Este método acepta dos parámetros: los índices bajo y alto que marcan la parte de la matriz que deben clasificarse. El esquema básico de la dividir método es algo como esto:

  1. Elija un punto de pivote.

  2. Mueva todos los elementos que son menos que el punto de pivote en el lado izquierdo de la partición.

  3. Mueva todos los elementos que son mayores que el punto de pivote en el lado derecho de la partición.

  4. Devuelve el índice del punto de pivote.

    Video: tutorial crear particion con particion wizar

La técnica más común para dividir la matriz es mantener dos variables de índice, llamado yo y j, que el trabajo de ambos extremos de la matriz hacia el centro.

Primero, yo comienza al principio de la matriz y se mueve hacia adelante hasta que encuentra un valor que es mayor que el valor de pivote. Entonces j comienza en el extremo opuesto de la matriz y se mueve hacia atrás hasta que encuentra un valor que es menor que el punto de pivote.

En ese momento, la dividir método tiene un valor que es mayor que el punto de pivote en el lado izquierdo de la matriz y un valor que es menor que el punto de pivote en el lado derecho de la matriz. Por lo tanto, los permuta.

A continuación, el ciclo se repite: yo se incrementa hasta que encuentra otro valor que es mayor que el valor de pivote, j se decrementa hasta que encuentra otro valor que es menor que el valor de pivote, y los elementos se intercambian. Este proceso se repite hasta j es menos que yo, lo que significa que los índices han cruzado y la partición se hace.

Aquí hay un código que pone todo junto:

partición int public static (int bajo, int alto) {int pivote = a [baja] -INT i = baja - 1-int j = Alta + 1-while (i lt; j) {for (i ++ - a [i] lt; pivot- i ++) - para (j --- una [j] gt; pivot- j -) - si (i lt; j) swap (i, j) -} volver j-}

Observe que en este código, la matriz está clasificada es una estática int matriz denominada un. Los extremos bajos y altos de la partición a dividirse se pasan como parámetros, y el método comienza por elegir el primer elemento de la partición como el valor para el punto de pivote. A continuación, se inicializa las variables de índice yo y j a partir de los parámetros.

Observe que 1 se resta del valor bajo y que se añade 1 al valor alto. Las variables índice dar un paso atrás de la matriz antes de que el bucle se inicia para que puedan obtener un buen comienzo.

los mientras bucle se utiliza para indicar cuando se termina la partición. Se repite mientras yo es menos que j. Después de estas variables índice se detienen, la partición se hace, y el valor de j se devuelve para indicar el punto de índice que divide la partición izquierda desde la partición correcta.

En el cuerpo de la mientras bucle son dos extraño bodyless para bucles. Estas para bucles no tienen cuerpos, ya que su único propósito es mover sus valores de índice hasta que encuentran un valor que es ya sea menor o mayor que el valor de pivote.

El primero para incrementa bucle de la yo variable de índice hasta que encuentra un valor que es mayor que el punto de pivote. Esta para bucle encuentra el primer valor que podrían necesitar ser movido al otro lado de la matriz.

Video: como crear particiones con windows y ( EASEUS Partition ) video 1

A continuación, el segundo para bucle decrementa el j variable de índice hasta que encuentra un valor que es menor que el punto de pivote. Así que este bucle se encuentra un valor que puede ser necesario intercambiar con el valor encontrado por el primer para lazo.

Finalmente, el Si cheques declaración de si los índices se han cruzado. Suponiendo que no tienen, una intercambiar método se llama para intercambiar los elementos. los intercambiar método es afortunadamente simple:

pública de intercambio static void (int i, int j) {int temp = a [i] -a [i] = a [j] -a [j] = TEMP-}

Este método mueve el yo elemento a una variable temporal, mueve el j elemento a la yo elemento y, a continuación, mueve la variable temporal a la j elemento.

Artículos Relacionados