Programação  
 
Conhecimento computador >> Programação >> Programação em Java >> 
Como usar um heapsort em Java
O algoritmo heapsort é um dos algoritmos de classificação mais rápida disponível . Os programadores usam heapsort em Java porque é uma boa escolha para matrizes muito grandes sabem ser em um estado indiferenciado. Pelo amor de eficiência, uma estrutura de árvore real não é usado. Em vez disso , a árvore é formado no local , bem no array. O algoritmo heapsort é um algoritmo " in place" , uma vez que não requer memória extra para realizar a classificação . Instruções
1

Componha o método swap. Isso vai trocar dois elementos de um array " de" swap public static void ( int [ ] a, int i , int j) {int tmp = a [j] ; . Uma [j] = a [i] ; um [i] = tmp ; } " "
2

Faça o núcleo do algoritmo , o método siftDown . É usado tanto para formar a estrutura de pilha e fazer o tipo real .
3

Peneire grandes valores para a raiz da árvore e valores pequenos para as folhas com o método siftDown . Enquanto este método é chamado várias vezes durante o processo de triagem , a maior nó é consistentemente peneirado para o nó de raiz e mudou-se para o fim da matriz . Qualquer nó n tem até dois filhos, cujos índices são n * 2 + 1 e n * 2 + 2. " " siftDown public static void (int [] a , int start , int end ) { raiz int = partida , enquanto (root * 2 + 1 criança int = root * 2 + 1 //Se a criança tem um irmão ea valor da criança é menor do que seu irmão se ( criança criança + +; } if (a [ root] swap ( a , raiz, criança ); root = criança ;} else { return;} }} " "
4

Use o método heapify . Este método é chamado no início do tipo para criar a estrutura de heap inicial. isso é feito de forma rápida, uma vez que a estrutura de heap é um pouco vago. a única exigência é que cada nó raiz deve ser maior que o . nós filhos " " heapify public static void (int [] a) {for (int start = a.length /2 - 1; iniciar > = 0; começar -) siftDown (a, começar , a.length -1 ); . . . } " "
5

Escreva o método heapsort o método heapifies primeiro a matriz para se preparar para o tipo o método siftDown é então chamado novamente desde o nó raiz é agora um valor pequeno Este Peneire um novo valor grande para o nó raiz , e todo o processo é repetido até que o tamanho da pilha é um " " heapsort public static void (int [] a) { heapify ( a); . for ( final int = a. comprimento - 1; final > 1; final -) { troca (a, final , 0); siftDown (a, 0, final - 1) ;}} " "
6

Teste . método heapsort o exemplo a seguir mostra um pequeno programa de teste " " void main ( string [ ] args ) { public static int [] a = new int [ 10]; . for (int i = 0; i for (int i = 0; i trocar (a, i, i + ( int) ( Math.random ( ) * ( 9 - i ))); System.out.println (" Antes de classificação :"); for (int i = 0; i heapsort ( a); System.out.println (" Após a triagem "); for (int i = 0; } i " "

Anterior :

Próximo : No
  Os artigos relacionados
·Como usar Java para criar Web Apps Serviço 
·Como conectar quadros usando NetBeans 
·O que o operador ^ média em Java 
·Como formato de impressão nas colunas alinhados em Jav…
·Como converter um objeto para um longo primitivo em Jav…
·Como realizar operações de árvore em Java 
·Como usar Regex em amostras Java 
·Como integrar o Android com Eclipse 
·Como atualizar o TableModel de outro segmento 
·Como substituir um método estático em Java 
  Artigos em destaque
·A diferença entre usar Javascript e Java Applets para …
·Como Agarrar Eventos fora-chave Java 
·Como excluir um caractere anterior em C + + 
·Como usar linguagem C para calcular juros compostos 
·Como testar a memória Heap Java Tamanho 
·O que é uma classe proxy 
·Como instalar o Dolphin Just Host 
·Como adicionar cordas a uma Lista de Java 
·Como personalizar um campo de texto J2ME 
·Como limpar um buffer de entrada em C + + 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados