Programação  
 
Conhecimento computador >> Programação >> Programação em Java >> 
Merge Sort no código Java
Classificação de listas de dados apresenta um dos problemas mais desafiadores para os programadores de computador , porque é difícil de conceituar e implementar algoritmos de ordenação eficientes em linguagens de programação . Sorting requer considerável cópia , movimentação e leitura de dados para trabalhar . Assim , os programadores se concentrar no desenvolvimento de algoritmos de classificação eficientes e genéricos. Um deles, o merge sort , funciona dividindo uma lista de valores , uma e outra forma recursiva para "dividir e conquistar " o problema. Desde merge sort é concebido como uma solução genérica , a maioria dos idiomas, incluindo Java , têm maneiras de implementá-lo. Mesclar Classe

Um merge sort recebe uma lista a ser classificada e recursivamente divide a lista até chegar a valores individuais , como números individuais. O tipo , em seguida, recombina os números em ordem de classificação , acabou retornando uma lista ordenada . Uma classe classificação básica em Java vai conter uma lista para classificar, e chamar um merge principal função de classificação define :

classe Direta {

int público [] x ;

void main ( string [ ] args ) { public static

x = [ 5, 6, 3, 4, 7, 8 , 10, 2];

mergesort (x , 0, x . comprimento -1) ; }}


merge Sort função

Fora da classe principal residirá uma função merge sort . Estes segmentos de função uma série de números para classificar na lista. Inicialmente, essa faixa vai representar toda a lista, mas como o merge sort continua , vai demorar apenas metade da lista até chegar entradas individuais. Em seguida , a função merge sort vai recombinar os elementos em grandes listas que são classificados ( Fonte 2 ) :

public void mergesort (int baixa, int oi ) {

if ( baixo < oi ) {int meio = (baixo + oi ) /2; mergesort ( baixa, média ); mergesort ( média + 1 , oi ); fundir (baixa, média, oi );}}

função direta Básico

A função de fusão irá combinar duas listas depois de classificá-los . Se a função recebe elementos únicos , ele irá requisitá-los . Caso contrário, ele terá duas listas separadas , e, dependendo do desejo do fim programador -los em ordem crescente ou decrescente :

merge private void (int baixa, int meio , int oi ) {

int [ ] copy = new int [ x.length -1] ;

//Copiar ambas as partes para a matriz auxiliar for (int i = baixo ; i < = oi ; i + +) { cópia [i ] = x [ i] ;}

int i = baixa; int j = meio + 1; int k = baixo ; while ( i < = meio && j < = oi ) {if ( cópia [ i ] < = copiar [j] ) { x [ k] = copiar [i] ; i + + ;} else { x [ k] = copiar [j] ; j + + ;} k + +; } //copie o resto do lado esquerdo da matriz em matriz de destino while ( i < = meio ) { x [k ] = copiar [i] ; k + +; i + + ;} }


< br > Merge Sort Recurse

a função " mergesort " recursivamente divide a lista. Primeiro, ele subdivide a lista original pela metade para cada vez que ele próprio chama de forma recursiva. Quando a recursão atingir um único dígito , a função depois recua e começa a ordenar a lista. Cada vez que a função recua para uma chamada de função anterior, se funde duas metades de uma lista menor, eventualmente, trabalhar de volta para a lista completa . A " fusão " função parece estar a fazer o trabalho pesado , organizando e cópia valores na lista, mas o coração de um tipo de mesclagem está na função enganosamente simples " mergesort " .
< Br >

Anterior :

Próximo : No
  Os artigos relacionados
·Criptografia Usando Java 
·I Não é possível processar arquivos JSP no IE 8.0 
·Como fazer JNLP Abrir com Java 
·Como mapear um Servlet Dentro de um Servlet 
·Como manter Letras no quadro em Java 
·Como incluir um prefixo para um gravador de tapeçaria 
·Razões para um Java Lang Incompatível Mudança da cla…
·Como usar Hibernate com Eclipse 
·As vantagens de usar JSP e Servlets 
·Como obter um número inteiro de nextLine 
  Artigos em destaque
·Método Mestre de Recorrência 
·Como Seal Violações JAXB no Oracle XML 
·O uso de um padrão Construtor C 
·Como usar o WPF TextBlock 
·Diferença entre fgetc e getc 
·Como usar o controle de página no iPhone SDK 
·Como editar um arquivo JSP 
·Como criar TCP /IP pacotes de código em C Programaçã…
·Como usar o interruptor de Caso em C # 
·Como Escrever Enquanto Looping Demonstrações 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados