epelpad

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