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(); } } |