Quicksort
Enviado por leslieherr • 25 de Abril de 2023 • Apuntes • 602 Palabras (3 Páginas) • 85 Visitas
EJERCICIO DESARROLLADO # 01
Desarrollar una aplicación para realizar el registro de Alumnos. Los datos a almacenar son dni, nombres, edad, promedio. Utilizar para este ejercicio ordenamiento recursivo QuickSort.
Creando la clase Alumno:
public class Alumno {
String dni,nom;
int edad;
double prom;
public Alumno() {
}
public Alumno(String dni, String nom, int edad, double prom) {
this.dni = dni;
this.nom = nom;
this.edad = edad;
this.prom = prom;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public double getProm() {
return prom;
}
FACULTAD DE INGENIERÍA Y ARQUITECTURA
public void setProm(double prom) {
this.prom = prom;
}
}
Creando la clase QuickSort
public class Quick {
public void ordenarQ(Alumno[] array) {
array= quicksort1(array);
}
public Alumno[] quicksort1(Alumno numeros[]) {
return quicksort2(numeros, 0, numeros.length-1); //se entrega el arreglo, posicion izquierda y derecha del arreglo
}
public Alumno[] quicksort2(Alumno numeros[], int izq, int der) { //recepciona
if (izq >= der) { //verifica que no haya cruce entre posiciones
return numeros;
}
int i = izq, d = der;
if (izq != der) { //realice los cambios
int pivote;
Alumno aux;
pivote = izq; //se asigna la izquierda al pivote
while (izq != der) {
while (numeros[der].getEdad() >= numeros[pivote].getEdad() && izq < der) {
der--;
FACULTAD DE INGENIERÍA Y ARQUITECTURA
}
while (numeros[izq].getEdad()< numeros[pivote].getEdad() && izq < der) {
izq++;
}
if (der != izq) {
aux = numeros[der];
numeros[der] = numeros[izq];
numeros[izq] = aux;
}
}
if (izq == der) {
quicksort2(numeros, i, izq - 1);
quicksort2(numeros, izq + 1, d);
}
} else {
return numeros;
}
return numeros;
}
}
Ingresando elementos a un arreglo de Alumnos para realizar el ordenamiento:
package Vista;
import Control.Merge;
import Control.Quick;
FACULTAD DE INGENIERÍA Y ARQUITECTURA
import Modelo.Alumno;
public class Consola {
public static void main(String[] args) {
Alumno[] array = new Alumno[3];
array[0] = new Alumno("41742587","Juan Perez",21,14);
array[1] = new Alumno("10587458","Diego Livano",27,11);
array[2] = new Alumno("52962858","Vania Salcedo",17,12);
System.out.println("ANTES DEL ORDENAMIENTO");
String cad="";
for(Alumno a:array) //recorre 1 hasta el N
{
cad = cad + "["+a.getNom()+"]"+"["+a.getEdad()+"]";
}
System.out.println(cad);
Quick objQ = new Quick();
objQ.ordenarQ(array);
System.out.println("DESPUES DEL ORDENAMIENTO");
cad="";
for(Alumno a:array) //recorre 1 hasta el N
{
FACULTAD DE INGENIERÍA Y ARQUITECTURA
cad
...