Ordenación recursiva con QuickSort y MergeSort
Enviado por Tescupo Elano • 25 de Abril de 2021 • Examen • 2.649 Palabras (11 Páginas) • 1.119 Visitas
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS[pic 1]
GUIA DE LABORATORIO NRO. 03
ESCUELA : INGENIERIA DE SISTEMAS ASIGNATURA : ESTRUCTURA DE DATOS CICLO : III TURNO : MAÑANA Y NOCHE SEMESTRE : 2021-1 DOCENTE : MGTR. DANIEL ANGELES PINILLOS |
- TEMA: Ordenación recursiva con QuickSort y MergeSort.
- OBJETIVOS:
- Configurar el Netbeans 8.2.
- Desarrollar los ejercicios propuestos por el docente.
- METODOLOGÍA:
- Solución de los ejercicios propuestos con la guía del docente.
- Realizar un informe de toda la secuencia del laboratorio propuesto.
- RECURSOS:
- Equipo computacional con conexión a internet.
- Utilizar la guía de instalación de Netbeans 8.2
- Utilizar la plataforma Blackboard para entregar el laboratorio
- Utilizar la plataforma de Zoom para la sustentación de laboratorio.
- DESARROLLO DE ACTIVIDADES:
- Descripción
- Proceso
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; } 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--; } 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; 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 { cad = cad + "["+a.getNom()+"]"+"["+a.getEdad()+"]"; } System.out.println(cad); } } |
...