ordenamiento con vectores paralelos en Java

Cuando se tienen vectores paralelos y se ordena uno de ellos hay que tener la precaución de intercambiar los elementos de los vectores paralelos.
Problema 1:
Confeccionar un programa que permita cargar los nombres de 5 alumnos y sus notas respectivas. Luego ordenar las notas de mayor a menor. Imprimir las notas y los nombres de los alumnos.
Programa:
import java.util.Scanner;
public class PruebaVector16 {
private Scanner teclado;
private String[] nombres;
private int[] notas;

public void cargar() {
teclado=new Scanner(System.in);
nombres=new String[5];
notas=new int[5];
System.out.println("Carga de nombres y notas" );
for(int f=0;f<nombres.length;f++) {
System.out.print("Ingese el nombre del alumno:" );
nombres[f]=teclado.next();
System.out.print("Ingrese la nota del alumno:" );
notas[f]=teclado.nextInt();
}
}

public void ordenar() {
for(int k=0;k<notas.length;k++) {
for(int f=0;f<notas.length-1-k;f++) {
if (notas[f]<notas[f+1]) {
int auxnota;
auxnota=notas[f];
notas[f]=notas[f+1];
notas[f+1]=auxnota;
String auxnombre;
auxnombre=nombres[f];
nombres[f]=nombres[f+1];
nombres[f+1]=auxnombre;
}
}
}
}

public void imprimir() {
System.out.println("Nombres de alumnos y notas de mayor a menor" );
for(int f=0;f<notas.length;f++) {
System.out.println(nombres[f] + " - " + notas[f]);
}
}

public static void main(String[] ar) {
PruebaVector16 pv=new PruebaVector16();
pv.cargar();
pv.ordenar();
pv.imprimir();
}
}
Definimos los dos vectores:
private String[] nombres;
private int[] notas;
Creamos los dos vectores paralelos con cinco elementos cada uno:
nombres=new String[5];
notas=new int[5];
En el proceso de ordenamiento dentro de los dos for verificamos si debemos intercambiar los elementos del vector notas:
for(int k=0;k<notas.length;k++) {
for(int f=0;f<notas.length-1-k;f++) {
if (notas[f]<notas[f+1]) {
En el caso que la nota de la posición 'f' sea menor a de la posición siguiente 'f+1' procedemos a intercambiar las notas:
int auxnota;
auxnota=notas[f];
notas[f]=notas[f+1];
notas[f+1]=auxnota;
y simultánemamente procedemos a intercambiar los elementos del vector paralelo (con esto logramos que los dos vectores continuen siendo vectores paralelos):
String auxnombre;
auxnombre=nombres[f];
nombres[f]=nombres[f+1];
nombres[f+1]=auxnombre;
Como vemos utilizamos dos auxiliares distintos porque los elementos de los dos vectores son de distinto tipo (int y String)
Si deseamos ordenar alfabéticamente la condición dependerá del vector nombres.

6 comentarios - ordenamiento con vectores paralelos en Java

@sakura1992
Mira hubiese puesto aunq sea una imagen para que quedara un poco mas explicado aunq yo si le entiendo pero alguno quizas les cueste enteder pero buen aporte te 5 porq solo esos me quedan ya y R+1
@LuchoPortables
Interesante... No quiero cuestionar lo que hiciste, solo una preguntita:
Se podia hacer de todas formas sin tantas funciones, ¿el uso de las funciones cargar, ordenar e imprimir tienen algun fin que no estoy viendo?
Gracias y +5
@LuchoPortables
Daniel75x dijo:
LuchoPortables dijo:Interesante... No quiero cuestionar lo que hiciste, solo una preguntita:
Se podia hacer de todas formas sin tantas funciones, ¿el uso de las funciones cargar, ordenar e imprimir tienen algun fin que no estoy viendo?
Gracias y +5

no es necesario el uso de todas esas funciones. Se puede hacer todo en el main.

Ok, muchas gracias! Solo preguntaba, talvez tenia alguna ventaja..
@andyrob1987
gracias man muy buen aporte me salvaste...muchas gracias