Este artículo describe el algoritmo de clasificación rápida implementado por Java basado en el método de división y conquista. Compártelo para su referencia, como sigue:
paquete cn.nwsuaf.quick;/*** Genere al azar 20 números y ordenarlos rápidamente** @author liu yonglang**/public class Quick {/*** Función de intercambio para implementar la operación de intercambio de dos números en la matriz** @param matriz* matriz* a ser operada* @param i* primer suscripción de la matriz de intercambio* @param j* segundo subscript de la matriz de intercambio* la matriz de intercambio* swap (int [] array, int i, int j) {int temp = array [i]; matriz [i] = array [j]; matriz [j] = temp; } / *** Algoritmo de división de división y conquista** @param matriz* matriz para operar* @param bajo* Dirección de inicio del módulo en la división* @param altura* Dirección final del módulo en la división* @return ubicación subíndice de elemento de referencia* / public intsc static int rápida (int [] array, int low, int altura) {// establece el primer número de elemento de referencia int pivot = arney arney // escanee de derecha a izquierda para encontrar el primer elemento más pequeño que el pivote mientras (bajo <altura) {while (bajo <altura && array [altura]> = pivot) altura--; // indica que se encontró un elemento más pequeño que el pivote si (bajo <altura) // Después de intercambio, bajo ejecuta +1 operación de intercambio (matriz, bajo ++, altura); // escanee de izquierda a derecha para encontrar el primer elemento más grande que el pivote, mientras que (bajo <altura && array [bajo] <= pivot) low ++; // indica que se encontró un elemento más grande que el pivote si (bajo <altura) // después de intercambio, ejecuta -1 operación de intercambio (matriz, baja, altura--); } // Vuelve a la posición final de la altura de retorno del elemento de referencia; } / ** * Tipo rápido de matriz * * @param Array * Array se operará * @param Low * Low * @param Height * High * / public static void sort (int [] array, int low, int altura) {// registra la posición correspondiente al elemento de referencia dividido int temp; // clasificar solo si (bajo <altura) {// divide la matriz temp = Quick (matriz, baja, altura); // clasificar recursivamente para el tipo de intervalo izquierdo (matriz, bajo, temp - 1); // clasificar recursivamente para el tipo de intervalo correcto (matriz, temp + 1, altura); }} public static void main (string [] args) {int [] array = new int [20]; System.out.println ("Wulin.com Resultado de la prueba:"); System.out.print ("Antes de clasificar la secuencia:"); for (int i = 0; i <array.length; i ++) {// Generar aleatoriamente 20 enteros de 0-99 matriz [i] = (int) (math.random () * 100); System.out.print (Array [i] + ""); } System.out.print ("/nsorted secuence:"); sort (matriz, 0, array.length - 1); para (int i = 0; i <array.length; i ++) system.out.print (array [i]+""); }}Resultados de ejecución:
PD: Aquí hay una herramienta de demostración para su referencia:
Demostración de animación en línea Insertar/Select/Bubble/Merge/Hill/Quick Sorting Algorithm Tool Tool:
http://tools.vevb.com/aideddesign/paixu_ys
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.