0 votos
por (20 puntos) en Java
Amigos he estado tratando de ordenar dos arrays con mergeSort en java pero me es imposible poder ordenarlos ya que ambos arrays tienen que ser ordenados al mismo tiempo estos son mis arreglos:
String [] Nombre = {"pedro","martha","jimena","armando","rodrigo","sergio","marilu","araceli","romulo","gladys","benito"};
int[]    Edad = {18,36,14,18,55,25,66,2,14,42,6};
y me gustaria que fueran ordenados asi:
     *   araceli   2
     *   benito    6
     *   jimena   14
     *   romulo   14
     *   pedro    18
     *   armando  18
     *   sergio   25
     *   martha   36
     *   gladys   42
     *   rodrigo   55
     *   marilu   66
Este es mi codigo que me ayuda a ordenar los enteros pero no puedo hacer que tambien el array Nombre se mueva con el Array Edad   


public class mergeSort {
    
  
   static private String [] Nombre = {"pedro","martha","jimena","armando","rodrigo","sergio","marilu","araceli","romulo","gladys","benito"};
   
   static private int[]    Edad = {18,36,14,18,55,25,66,2,14,42,6};
   
   static private int tam = 11;

    
     public static void inicio( int edad[ ]){
        int tmp[] = new int[ edad.length ];

        asignacion( edad, tmp, 0, edad.length - 1 );
    }
     
    private static void asignacion( int edad[ ], int tmp[],int left, int right ){
        if( left < right )
        {
            int center = ( left + right ) / 2;
            asignacion( edad, tmp, left, center );
            asignacion( edad, tmp, center + 1, right );
            mezcla( edad, tmp, left, center + 1, right );
        }
    }

    private static void mezcla( int edad[ ],int tmp[],int leftPos, int rightPos, int rightEnd){
       
        int leftEnd = rightPos - 1;
        int tmpPos = leftPos;
        int numElements = rightEnd - leftPos + 1;
        String [] tem= new String[tam];

        // Main loop
        while( leftPos <= leftEnd &amp;&amp; rightPos <= rightEnd ){
            
            if( edad[ leftPos ]<( edad[ rightPos ] ) ){ // aqui es donde compara
                
                tmp[ tmpPos++ ] = edad[ leftPos++ ];
               
                
                
                
            }
            else{
                
                tmp[ tmpPos++ ] = edad[ rightPos++ ];
               
            }
        }
        while( leftPos <= leftEnd ){    // Copy rest of first half
            
            tmp[ tmpPos++ ] = edad[ leftPos++ ];
           
        }
        
        while( rightPos <= rightEnd ){  // Copy rest of right half
            
            tmp[ tmpPos++ ] = edad[ rightPos++ ];
            
        }
        // Copy TmpArray back
        for( int i = 0; i < numElements; i++, rightEnd-- ){
            edad[ rightEnd ] = tmp[ rightEnd ];
            
        }
    }
   

    public static void main(String args[]){
        
        inicio(Edad);
        
        System.out.println("Arreglo ordenado: \n");
       for (int i=0;i < tam;i++){ //Este bucle imprime el contenido del array
           
          System.out.print(Edad[i]+"\n");
       }//fin del for
 
     }//fin del main
    
    /* ME GUSTARIA QUE IMPRIMIERA ESTO:
     *   araceli   2
     *   benito    6
     *   jimena   14
     *   romulo   14
     *   pedro    18
     *   armando  18
     *   sergio   25
     *   martha   36
     *   gladys   42
     *   rodrigo   55
     *   marilu   66
     */
    
    
    
    
}//class MergeSort





Por favor, accede o regístrate para responder a esta pregunta.

Preguntas relacionadas

0 votos
3 respuestas
preguntado por cyamda (30 puntos) Jul 10, 2021 en Java
0 votos
0 respuestas
0 votos
3 respuestas
0 votos
2 respuestas
preguntado por jcortes (20 puntos) Ene 28, 2016 en Javascript
0 votos
1 respuesta
preguntado por Damian2016 (80 puntos) May 2, 2017 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...