Está en la página 1de 6

*CURSO PROGRAMACION II MIERCOLES DE 1-5 PM PEDRO RAFAEL GUEVARA

SALGADO
IMPLEMENTACION DEL METODO SHELL SORT
JOSE AVILES PACHECHO
JULIETH HERNANDEZ POLO
CARLOS QUINTERO TORDECILLA
*/
import javax.swing.JOptionPane;
public class Estudiante {
private int tam;
private float notas[];
private String nombres[];
public Estudiante()
{
notas = null;
nombres = null;
tam = 0;
}
public void crearVector()
{
notas = new float[tam];
nombres = new String[tam];
}
public void setTam(int t)
{
tam = t;
}
public int getTam()
{
return tam;
}
public void setNotas(int p, float d)
{
notas[p]=d;
}
public float getNotas(int p)
{
return notas[p];
}
public void setNombres(int p, String d)
{
nombres[p]=d;
}
public String getNombres(int p)
{
return nombres[p];
}

//METODO PARA CAMBIAR DE POSICIN LAS NOTAS Y LOS NOMBRES


//ES DECIR SI LA NOTA CAMBIA DE POSICIN DEBE CAMBIAR CON SU
//RESPECTIVO NOMBRE DEL ESTUDIANTE
public void cambiar(int p1, int p2){
float temp;
String temp_2;
temp = getNotas(p1);
setNotas(p1,getNotas(p2));
setNotas(p2, temp);
temp_2 = getNombres(p1);
setNombres(p1,getNombres(p2));
setNombres(p2, temp_2);
}

//METODO DE ORDENAMIENTO A IMPLEMENTAR


public void ordenarShell()
{
int intervalo,i,j,k;
intervalo = getTam() /2;
while (intervalo >0)
{
for (i = intervalo;i<getTam(); i++)
{
j=i-intervalo;
while (j>=0)
{
k = j+intervalo;
if (getNotas(j) >= getNotas(k)){
j = -1;
}
else{
cambiar(j, k);
j -= intervalo;
}
}
}
intervalo = intervalo / 2;
}
}
}

//CLASE MAIN
import javax.swing.JOptionPane
public class Main {
public static void mostrarVector(Estudiante ordenar) //METODO SE LE PASA
COMO //PARAMETRO UN OBJETO DE LA CLASE ESTUDIANTE QUEDA A
CRITERIO DEL ESTUDIANTE AVERIGUAR SOBRE CREACION DE OBJETOS E
IMPLEMENTACION COMO PARAMETRO

{
String datosVect=""; // variable String para guardar toda la
informacion de los vectores estudiantes y notas
for(int i=0; i<=ordenar.getTam()-1; i++)
{
//TODA LA INFORMACION DE LOS VECTORES QUEDA GUARDADA EN LA
VARIABLE datosVect //MENCIONADA ANTERIORMENTE, ,QUEDA A CRITERIO
DEL ESTUDIANTE AVERIGUAR MAS SOBRE String .valueOf()
/* valueOf(N) :Mtodo esttico. Convierte el valor N a String. N puede ser
de cualquier tipo.*/
datosVect = datosVect+String.valueOf("estudiante "+ordenar.getNombres(i)
+"\n");
datosVect = datosVect+String.valueOf(" Nota total = "+ordenar.getNotas(i)
+"\n");
}
//MUESTRO LO QUE CONTIENE LA VARIABLE datosVect
JOptionPane.showMessageDialog(null, "Notas
registradas"+"\n"+datosVect);
}

public static void main(String[] args) {


//DEFINO EL OBJETO Y LO CREO
Estudiante obj = new Estudiante();
//PIDO EL NUMERO DE ELEMENTOS
int numeroElementos = Integer.parseInt(JOptionPane.showInputDialog(null, "numero
de estudiantes:"));
obj.setTam(numeroElementos);
//LLAMO EL METODO CREARVECTOR()

obj.crearVector();
//IMPLEMENTO UN FOR PARA LLENAR EL VECTOR ESTUDIANTE Y EL DE
NOTAS
for(int i=0; i<=obj.getTam()-1; i++)
{
String nom = (JOptionPane.showInputDialog(null, "nombre del estudiante
"+i+":"));
obj.setNombres(i, nom);
float dato = Float.parseFloat(JOptionPane.showInputDialog(null, "Digitar
Nota "+i+":"));
obj.setNotas(i, dato);
}
JOptionPane.showMessageDialog(null, "Informacion Suministrada con
exito!...");
mostrarVector(obj); //MUESTRO EL VECTOR
obj.ordenarShell(); //LLAMO EL METODO ORDENARSHELL() DE ESTA
MANERA ORDENA EL //VECTOR NOTA DE MAYOR A MENOR
JOptionPane.showMessageDialog(null, "Ordenando por shell de mayor a
menor!...");
mostrarVector(obj); //MUESTRO EL VECTOR ORDENADO
JOptionPane.showMessageDialog(null, "mejores estudiante");
//ALGORITMO PARA MOSTRAR LOS TRES MEJORES ESTUDIANTES
,RECUERDE QUE LUEGO DE HABER //ORGANIZADO EL VECTOR NOTAS DE
MAYOR A MENOR ,SABEMOS QUE LAS TRES NOTAS PRIMERAS //SON LAS
MEJORES
String datosMejores="";
for(int i=0; i<3; i++){
datosMejores = datosMejores+String.valueOf("estudiante "+obj.getNombres(i)+"
Nota = "+obj.getNotas(i)+"\n");
}

JOptionPane.showMessageDialog(null, "Notas registradas"+"\n"+datosMejores);


}
}

ASI SE IMPRIMEN LOS DATOS IMPLEMENTANDO ESTAS LINEAS


datosVect = datosVect+String.valueOf("estudiante "+ordenar.getNombres(i)+"\n");
datosVect = datosVect+String.valueOf(" Nota total = "+ordenar.getNotas(i)+"\n");
ES DECIR SE IMPRIME TODA LA INFORMACION EN UN SOLO RECUADRO

SI NO SE APLICAN LOS LINEAS ANTERIORES SE MOSTRARA DE UNO A UNO


EL VALOR QUE CONTIENE CADA POSICION DEL VECTOR TANTO NOTAS
COMO NOMBRES
ASI MUESTRA EL PRIMER ESTUDIANTE CON SU NOTA (CLICK ) Y MUESTRA
EL SIGUIENTE Y ASI SUCESIVAMENTE ES DECIR NO LO MUESTRA EN UN
RECUADRO COMPLETO CON LA IMAGEN ANTERIOR

VASTA CON VER EL DETALLE DE UN SISTEMA PARA ENTENDERLO POR


COMPLETO
BY JAP

También podría gustarte