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í
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
si pudieras al menos pasarme una linea de código de poder ordenarlos seria genial
por favor
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).