Este artigo descreve o algoritmo de classificação rápida implementada pelo Java com base no método de divisão e conquista. Compartilhe -o para sua referência, como segue:
pacote cn.nwsuaf.quick;/*** gera aleatoriamente 20 números e classificá -los rapidamente** @author liu yonglang**/public class Quick {/*** Função para implementar a operação de troca de dois números na matriz** @param Array* Array para ser operado* @Param I* Primeiro subcript da matriz** @param Array* Array para ser operado* swap (int [] matriz, int i, int j) {int temp = array [i]; Array [i] = Array [J]; matriz [j] = temp; } / *** Divisão e algoritmo de divisão de conquista** @param Array* Array a ser operado* @param Low* Iniciar o endereço do módulo na divisão* @param altura* Endereço final do módulo na divisão* @return Location Subscript do elemento de referência* / public static int Rick (int [Array], int baixo, Int altura) {// Definir o primeiro; // Digitalizar da direita para a esquerda para encontrar o primeiro elemento menor que o pivô enquanto (baixo <altura) {while (Low <Height && Array [Height]> = Pivot) Hight--; // indica que um elemento menor que o pivô foi encontrado se (baixo <altura) // após a troca, baixo executa +1 troca de operação (matriz, baixa ++, altura); // Digitalizar da esquerda para a direita para encontrar o primeiro elemento maior que o pivô enquanto (baixo <altura && Array [baixo] <= pivot) baixo ++; // indica que um elemento maior que o pivô foi encontrado se (baixo <altura) // após a troca, executa -1 troca de operação (matriz, baixa, altura--); } // retorna à posição final da altura do retorno do elemento de referência; } / ** * tipo rápido de matriz * * @param Array * Array a ser operado * @param baixo * baixo * @param altura * alta * / public static void Sort (Int [] Array, int baixo, int altura) {// Registre a posição correspondente ao elemento de referência dividido int temp; // Classifique apenas se (baixo <altura) {// divida a matriz temp = rápido (matriz, baixa, altura); // Classifique recursivamente para o tipo de intervalo esquerdo (matriz, baixo, temp - 1); // classifica recursivamente para o tipo de intervalo certo (matriz, temp + 1, altura); }} public static void main (string [] args) {int [] array = new int [20]; System.out.println ("Wulin.com Resultado do teste:"); System.out.print ("Antes de classificar sequência:"); for (int i = 0; i <array.length; i ++) {// gerar aleatoriamente 20 números inteiros de 0-99 Array [i] = (int) (math.random () * 100); System.out.print (Array [i] + ""); } System.out.print ("/NSorted Sequence:"); classificar (matriz, 0, Array.Length - 1); for (int i = 0; i <Array.Length; i ++) System.out.print (Array [i]+""); }}Resultados em execução:
PS: Aqui está uma ferramenta de demonstração para sua referência:
Demonstração de animação on -line Inserir/selecionar/Bubble/Merge/Hill/Quick Strating Algorithm Process Fool:
http://tools.vevb.com/aideddesign/paixu_ys
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.