Вы находитесь на странице: 1из 5

Facultad de Ingeniera de Sistemas e Informtica

LABORATORIO
CURSO : Algortmica III
No. : Laboratorio No.03
TEMA : Ordenacin
DURACIN ESTIMADA : 01:40 horas.

I. OBJETIVOS
El presente laboratorio tiene por objetivo implementar los mtodos de ordenamiento.

II. RESUMEN
En esta prctica usted definir un proyecto completo en NetBeans con mltiples clases, en la cual
se implementen los mtodos de ordenamiento.

III. DEFINICIN DEL PROBLEMA


Cree una aplicacin en la que se desarrollaren por lo menos dos mtodos de clasificacin y se
evale con la misma entrada la diferencia en el nmero de comparaciones e intercambios que
realiza para ordenar el conjunto de datos.

IV. CONSTRUCCION DE LA APLICACIN


Crea la clase Empleado
package ordenamiento;

public class Empleado


{
private int codigoDelEmpleado;
private String nombreDelEmpleado;
private float sueldoDelEmpleado;

public Empleado(int codigo, String nombre, float sueldo) {


codigoDelEmpleado = codigo;
nombreDelEmpleado = nombre;
sueldoDelEmpleado = sueldo;
}

public void setCodigoDelEmpleado(int codigo)


{
codigoDelEmpleado = codigo;
}

public int getCodigoDelEmpleado()


{
return codigoDelEmpleado;
}

public void setNombreDelEmpleado(String nombre)


{
nombreDelEmpleado = nombre;
}
public String getNombreDelEmpleado()
{

respinozad@unmsm.edu.pe Pg. 1
Facultad de Ingeniera de Sistemas e Informtica
return nombreDelEmpleado;
}

public void setSueldoDelEmpleado(float sueldo)


{
sueldoDelEmpleado = sueldo;
}

public float getSueldoDelEmpleado()


{
return sueldoDelEmpleado;
}
}

Crea la clase Empresa


package ordenamiento;

public class Empresa {


private Empleado empleados[];
private final int NUMERO_EMPLEADOS = 20;
private int intercambios = 0;
private int comparaciones = 0;

public Empresa()
{
int codigos[ ] = {204, 305, 105, 204, 415, 106, 500, 100, 540, 420,
100, 215, 340, 180, 600, 312, 147, 165, 510, 601};
String nombres[ ] = { "Juan", "Ana", "Rosa", "Carlos", "Ral",
"Pedro", "Rosario", "Martha", "Sal", "Karen",
Rosa, Francis, Ricardo, Luis, Dmaris,
Diana, Pablo, Marcelo, Carolina, Ingrid};
float sueldos[ ] = {1500, 800, 2000, 550, 1200, 3500, 1800, 900, 750, 4000,
750, 1500, 1200, 3500, 4000, 1800, 950, 1400, 600, 5500};

empleados = new Empleado[NUMERO_EMPLEADOS];

for (int i=0; i<empleados.length; i++)


empleados[i] = new Empleado(codigos[i], nombres[i], sueldos[i]);
}

public int getCodigoDelEmpleado (int i)


{
return empleados[i].getCodigoDelEmpleado( );
}

public void setCodigoDelEmpleado (int codigo, int i)


{
empleados[i].setCodigoDelEmpleado(codigo);
}

respinozad@unmsm.edu.pe Pg. 2
Facultad de Ingeniera de Sistemas e Informtica
public String getNombreDelEmpleado (int i){
return empleados[i].getNombreDelEmpleado( );
}

public void setNombreDelEmpleado (String nombre, int i){


empleados[i].setNombreDelEmpleado(nombre);
}

public float getSueldoDelEmpleado (int i){


return empleados[i].getSueldoDelEmpleado();
}

public void setSueldoDelEmpleado (float sueldo, int i){


empleados[i].setSueldoDelEmpleado(sueldo);
}

public int getNumeroDeEmpleados()


{
return NUMERO_EMPLEADOS;
}

public int getIntercambios()


{
return intercambios;
}

public int getComparaciones()


{
return comparaciones;
}

public void OrdenBurbuja()


{
Empleado temp = new Empleado(0,"",0);
comparaciones = 0;
intercambios = 0;

for (int i = 1; i< empleados.length; i++ )


for (int j = empleados.length-1 ; j >= i; j--)
{
comparaciones++;
if(empleados[j-1].getCodigoDelEmpleado() >
empleados[j].getCodigoDelEmpleado())
{
temp.setCodigoDelEmpleado(empleados[j-1].
getCodigoDelEmpleado());
empleados[j-1].setCodigoDelEmpleado (empleados[j].
getCodigoDelEmpleado());
empleados[j].setCodigoDelEmpleado(temp.
getCodigoDelEmpleado());
temp.setNombreDelEmpleado(empleados[j-1].

respinozad@unmsm.edu.pe Pg. 3
Facultad de Ingeniera de Sistemas e Informtica
getNombreDelEmpleado());
empleados[j-1].setNombreDelEmpleado(empleados[j].
getNombreDelEmpleado());
empleados[j].setNombreDelEmpleado(temp.
getNombreDelEmpleado());

temp.setSueldoDelEmpleado(empleados[j-1].
getSueldoDelEmpleado());
empleados[j-1].setSueldoDelEmpleado(empleados[j].
getSueldoDelEmpleado());
empleados[j].setSueldoDelEmpleado(temp.
getSueldoDelEmpleado());

intercambios++;
}
}
}

public void OrdenInsercionDirecta()


{
Empleado temp = new Empleado(0,"",0);
comparaciones = 0;
intercambios = 0;
int k;
for (int i = 1; i < empleados.length; i++)
{
comparaciones++;
temp.setCodigoDelEmpleado(empleados[i].getCodigoDelEmpleado());
temp.setNombreDelEmpleado(empleados[i].getNombreDelEmpleado());
temp.setSueldoDelEmpleado(empleados[i].getSueldoDelEmpleado());
k = i - 1;
while ( k >= 0 && temp.getCodigoDelEmpleado()<empleados[k].getCodigoDelEmpleado())
{
empleados[k+1].setCodigoDelEmpleado(empleados[k].getCodigoDelEmpleado());
empleados[k+1].setNombreDelEmpleado(empleados[k].getNombreDelEmpleado());
empleados[k+1].setSueldoDelEmpleado(empleados[k].getSueldoDelEmpleado());
k--;
intercambios++;
}
empleados[k+1].setCodigoDelEmpleado(temp.getCodigoDelEmpleado());
empleados[k+1].setNombreDelEmpleado(temp.getNombreDelEmpleado());
empleados[k+1].setSueldoDelEmpleado(temp.getSueldoDelEmpleado());
}
}
}

Crea la clase ComparaOrden

package ordenamiento;

public class ComparaOrden {

respinozad@unmsm.edu.pe Pg. 4
Facultad de Ingeniera de Sistemas e Informtica
public static void main(String[] args) {
Empresa miEmpresa1 = new Empresa();
Empresa miEmpresa2 = new Empresa();

System.out.println("\nMetodo de la Burbuja");
System.out.println("--------------------------------");

miEmpresa1.OrdenBurbuja();

for (int i = 0; i < miEmpresa1.getNumeroDeEmpleados(); i++)


{
System.out.printf("%10d%10s%10.2f\n",
miEmpresa1.getCodigoDelEmpleado(i),
miEmpresa1.getNombreDelEmpleado(i),
miEmpresa1.getSueldoDelEmpleado(i));
}
System.out.printf("Numero de comparaciones: %d\n",
miEmpresa1.getComparaciones());
System.out.printf("Numero de intercambios: %d\n",
miEmpresa1.getIntercambios());

System.out.println("\nMetodo Insercion Directa");


System.out.println("--------------------------");

miEmpresa2.OrdenInsercionDirecta();

System.out.println();
for (int i = 0; i < miEmpresa2.getNumeroDeEmpleados(); i++)
{
System.out.printf("%10d%10s%10.2f\n",
miEmpresa2.getCodigoDelEmpleado(i),
miEmpresa2.getNombreDelEmpleado(i),
miEmpresa2.getSueldoDelEmpleado(i));
}
System.out.printf("Numero de comparaciones: %d\n",
miEmpresa2.getComparaciones());
System.out.printf("Numero de intercambios: %d\n",
miEmpresa2.getIntercambios());
}
}

V. EJERCICIOS
Crea una interfaz grfica que reemplace la clase ComparaOrden
Implementa los mtodos de Seleccin Directa y QuickSort, evale el nmero de
comparaciones e intercambios con los mtodos anteriores.
Pruebe los mtodos con arreglos ordenados e invertidos y compare su eficiencia.

respinozad@unmsm.edu.pe Pg. 5

Вам также может понравиться