JAVA 05x03: MERGE SORT
MERGE SORT:
package javaapplication5c;
import java.util.Scanner;
public class JavaApplication5C {
public static void MostrarArreglo(int N,int ANros[]) {
for(int k=0;k<N;k++) {
System.out.print(ANros[k]+" ");
}
}
//MODULO LEER ARREGLO
public static void LeerArreglo(int N,int Anotas[]) {
//Leer las notas
for(int k=0;k<N;k++) {
System.out.print("Nro "+(k+1)+" : ");
Anotas[k]=LeerEntero();
}
}
//MODULO LEER ENTERO
public static int LeerEntero() {
Scanner S=new Scanner(System.in);
int Nro=S.nextInt();
return Nro;
}
public static void merge(int A[],int izq, int m, int der){
int i, j, k;
int [] B = new int[A.length]; //array auxiliar
for (i=izq; i<=der; i++) //copia ambas mitades en el array auxiliar
B[i]=A[i];
i=izq; j=m+1; k=izq;
while (i<=m && j<=der) //copia el siguiente elemento más grande
if (B[i]<=B[j])
A[k++]=B[i++];
else
A[k++]=B[j++];
while (i<=m) //copia los elementos que quedan de la
A[k++]=B[i++]; //primera mitad (si los hay)
}
public static void mergesort(int A[],int izq, int der){
if (izq<der){
int m=(izq+der)/2;
mergesort(A,izq, m);
mergesort(A,m+1, der);
merge(A,izq, m, der);
}
}
public static void main(String[] args) {
//DECLARAR ARREGLO
int Max=100;
int ANros[]=new int[Max];
//Leer los elementos del arreglo
int N;
System.out.print("Ingrese Nro de Elementos : ");
N = LeerEntero();
//LEER ARREGLO
LeerArreglo(N, ANros);
//ORDENAR LOS ELEMENTOS DEL ARREGLO
mergesort(ANros,0,N-1);
//Mostrar arreglo ordenado
MostrarArreglo(N,ANros);
}
}
(PROGRAMACIÓN II - LABORATORIO 05 - ALGORITMO : MERGE SORT)
Comentarios
Publicar un comentario