Ayuda con ordenamiento de nombres y numeros

Iniciado por Tada, 2 Abril 2016, 16:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Tada

hola necesito saber como sacar un listado de estudiantes con sus promedios de cada unidad formativa ordenado de forma alfabética y por orden de mérito. lo de ordenar los nombres si me lo hago pero de promedios de cada unidad no se como hacerlo .por cierto son 4 unidades.

este código es para ingresar los nombres de los estudiantes
public static String[] Estudiantes(String[] Nombres, int[] Practicas, int[] Trabajos, int[] ExamenUnidad, int[] NotaUnidad) throws IOException {

        for (int i = 0; i < Nombres.length; i++) {
            Tada("Ingrese Nombre N°" + (i + 1) + ":");
            Nombres[i] = LeerCadena();
            Tada("\n");
            Notas(Practicas, Trabajos, ExamenUnidad, NotaUnidad);
        }
        return Nombres;
    }

y este es para las notas
public static int[] Notas(int[] Practicas, int[] Trabajos, int[] ExamenUnidad, int[] NotaUnidad) throws IOException {

        for (int i = 0; i < Practicas.length; i++) {
            Tada("╔════" + "         Notas del la unidad Nº" + (i + 1) + "        ════╗" + "\n");
            Tada(" Ingrese la nota de Practicas: ");
            Practicas[i] = LeerDato();
            Tada(" Ingrese la nota de Trabajos: ");
            Trabajos[i] = LeerDato();
            Tada(" Ingrese la nota de ExamenUnidad: ");
            ExamenUnidad[i] = LeerDato();
            NotaUnidad[i] = (Practicas[i] + Trabajos[i] + ExamenUnidad[i]) / 3;
            Tada("╚════" + " La nota de unidad del estudiante es:" + NotaUnidad[i] + " ════╝" + "\n");
            Tada("\n");
        }
        return NotaUnidad;

    }

Lo que quiero encontrar es como ordenar de manera numérica los promedios de cada unidad formativa
en este código o algún otro que me proporcionen
public static void Burbuja(String[] x, int[] NotaUnidad) {
        for (int i = 0; i < (x.length); i++) {
            for (int j = 0; j < (x.length - 1); j++) {
                if (x[j].compareToIgnoreCase((x[j + 1])) > 0) {
                    String ordenarnombre = x[j];
                    x[j] = x[j + 1];
                    x[j + 1] = ordenarnombre;
                    int OrdenarNota = NotaUnidad[j];
                    NotaUnidad[j] = NotaUnidad[j + 1];
                    NotaUnidad[j + 1] = OrdenarNota;

                }
            }
        }

    }

al final quiero mostrar algo así
ejemplo de los nombres ordenados y que salgo a su costado los promedios de cada unidad ordenado de forma numérica

nombres ordenados          promediosUnidadOrdenados
ana                                     12
                                          15
                                          18
kevin                                    02
                                          10
                                          12
zus                                      15
                                          16
                                          19
algo así

LaiaxanIV

Si no he entendido mal quieres ordenar las notas de cada alumno que tienes dentro de 3 arrays diferentes (practicas,trabajos,examenUnidad,notaunidad)?
El algoritmo buble sort (burbuja) es el algoritmo de ordenación más ineficiente de todos :P

Tada

si pudieras al menos pasarme una linea de código de poder ordenarlos seria genial
por favor

LaiaxanIV

#3
Perdona que no te haya respondido antes.

static void mergeSort(int[] A) {
       if (A.length > 1) {
           int q = A.length/2;
           int[] leftArray = new int[q];
           for(int i = 0; i < q;++i){
               leftArray[i]=A[i];
           }
           int[] rightArray = new int[A.length - q];
           for(int i = q; i < A.length; ++i){
               rightArray[i-q]=A[i];
           }

           mergeSort(leftArray);
           mergeSort(rightArray);

           merge(A,leftArray,rightArray);
       }
   }

   static void merge(int[] a, int[] l, int[] r) {
       int totElem = l.length + r.length;
       int i,li,ri;
       i = li = ri = 0;
       while ( i < totElem) {
           if ((li < l.length) && (ri<r.length)) {
               if (l[li] < r[ri]) {
                   a[i] = l[li];
                   i++;
                   li++;
               }
               else {
                   a[i] = r[ri];
                   i++;
                   ri++;
               }
           }
           else {
               if (li >= l.length) {
                   while (ri < r.length) {
                       a[i] = r[ri];
                       i++;
                       ri++;
                   }
               }
               if (ri >= r.length) {
                   while (li < l.length) {
                       a[i] = l[li];
                       li++;
                       i++;
                   }
               }
           }
       }
   }


Este algoritmo, merge sort ordena un int[] del tamaño que sea de menor a mayor.
Si puedes usar alguna libreria, si haces import java.util.Arrays, tienes la opción de usar la función Arrays.sort(Object[] A).