La Web del Programador: Comunidad de Programadores
 
    Pregunta:  50737 - ORDENACION DE ARCHIVOS SECUENCIALES EN JAVA
Autor:  Beatriz Arias
necesito los codigos q me ayuden a la ordenacion de archivos por medio del metodo mezcla natural o mezcla directa...pueden ayudarme¡¡

  Respuesta:  Kael
Este es el codigo de mezcla.

import java.awt.*;

class Mezcla extends Frame
{

public Mezcla()
{

int A[]={9,1,3,5,10,4,6};
mergeSort (A,0,A.length-1);

for (int i=0;i<A.length;i++)
System.out.print(A[i]+"\t");
}

public static void mergeSort (int [] A, int bajo, int alto)
{
if (bajo < alto) //Si hay más de un elemento
{
int medio = (alto + bajo)/2;
mergeSort (A, bajo, medio); //Llamada recursiva con la mitad de los elementos
mergeSort (A, medio+1, alto); //Llamada recursiva con la otra mitad de los elementos
merge (A, bajo, medio+1, alto);//Procedimiento que mezcla el resultado de las dos llamadas anteriores
}
}
public static void merge (int [] A, int bajo, int bajo_2, int alto)
{
int i = bajo;//Variable de primer elemento de la primera subsecuencia
int finbajo = bajo_2 -1; //Variable del último elemento de la primera subsecuencia
int j = bajo_2;//Variable del primer elemento de la segunda subsecuencia
int k = bajo; // posicion del temporal

/*Se introducen en un array Temporal los elementos ordenados
de las dos subsecuencias, hasta el momento en que una de las
subsecuencias ya tiene todos los elementos ordenados*/

int Temp[]=new int [ A.length];
while (( i <= finbajo) && (j<= alto))
{
if (A[i] <= A[j])
Temp[k++] = A[i++];
else
Temp[k++] = A[j++];
}
while (i <= finbajo) //Si se agotaron todos los elementos de la segunda subsecuencia
Temp[k++] = A[i++];
while (j <= alto) //Si se agotaron los de la primera subsecuencia
Temp[k++] = A[j++];

//Paso todos los elementos del Temporal al vector
for (i = bajo; i <= alto; i++)
A[i] = Temp[i];
}

public static void main(String args[]) {
System.out.println(" Mezcla...");
Mezcla mainFrame = new Mezcla();

}
}