Clasificación de listas de datos se presenta uno de los problemas más difíciles para los programadores , ya que es difícil de conceptualizar e implementar algoritmos de ordenación eficientes en lenguajes de programación . Clasificación requiere considerable copiar, mover y lectura de datos para trabajar . En consecuencia , los programadores se centran en el desarrollo de algoritmos de ordenación eficientes y genérico . Uno de ellos, el tipo de combinación , trabaja dividiendo una lista de valores de una y otra forma recursiva para " dividir y conquistar " el problema. Como una especie de combinación está pensado como una solución genérica , la mayoría de los lenguajes , como Java , tienen maneras de implementarlo. Combinar Clase  
 Una fusión especie tiene una lista para ser ordenados y recursiva divide la lista hasta llegar a valores individuales , como los números individuales. La especie se recombina los números de forma ordenada , el tiempo de regresar una lista ordenada . Una clase de la clasificación básica en Java que contendrá una lista para ordenar, y llamar a una función principal de combinación de clasificación que define : 
 clase 
 Merge { 
 
 public int [ ] x; 
 
 public static void main ( String [] args ) { 
 
 x = [ 5 , 6 , 3 , 4 , 7 , 8 , 10 , 2 ] ; 
 
 mergesort (x, 0 , x . length-1 ) ; 
 
 } } 
 Merge Ordenar función 
 
 Fuera de la clase principal residirá una función de ordenación de combinación. Esta función segmentos de un rango de números para ordenar la lista. Inicialmente , esta gama representará toda la lista, pero como el tipo de mezcla continua , tendrá sólo la mitad de la lista hasta llegar a las entradas individuales. Entonces , la función de clasificación de combinación se recombinar los elementos en grandes listas que se ordenan (Fuente 2 ) : 
 
 public void mergesort (bajo int , int hi ) { 
 
 if ( bajo < hi ) { int medio = (bajo + alta ) /2 ; mergesort (bajo, medio) ; mergesort ( media + 1 , hi ), merge (baja, media, alta ) ;} } 
 < br > Basic Merge función 
 
 La función de fusión combinará dos listas después de clasificarlos . Si la función recibe los elementos individuales , ordenará ellos. De lo contrario, tendrá dos listas separadas , y en función de los deseos de la orden del programador en orden ascendente o descendente : 
 
 private void combinación ( int , int media baja , int hi ) { 
 < p > int [ ] = new int copia [ x.length - 1 ] ; 
 
 //Copiar las dos partes en la matriz helper for (int i = Baja ; i < = hi , i + + ) { copia [ i ] = x [ i ] ;} 
 
 int i = Baja ; int j = media + 1 ; int k = bajo ; while ( i < = mediados && j < = hi ) {if ( copia [ i ] < = copia [ j ] ) { x [ k ] = copia [ i]; i + + ;} else { x [ k ] = copia [ j ], j + + ;} k + + ;} //Copiar el resto del lado izquierdo de la matriz en la matriz de destino while ( i < = centro ) { x [ k ] = copia [ i ], k + + , i + + ;} } 
 
 
 < br > Combinar Ordenar Recurse 
 
 la función " mergesort " divide de forma recursiva la lista. En primer lugar , se subdivide la lista original en medio de cada vez que se llama a sí mismo de forma recursiva. Cuando la recursividad alcanza un solo dígito , la función y luego retrocede y comienza a ordenar la lista. Cada vez que la función da marcha atrás a una llamada a la función anterior , se une las dos mitades de una lista más pequeña , con el tiempo de trabajo de nuevo a la lista completa. La función " merge " parece hacer todo el trabajo por la organización y la copia de los valores en la lista, pero el corazón de una fusión especie se encuentra en la función engañosamente simple " mergesort " . 
 < Br >