Tarea CC30A
14 de Agosto de 2001
Tarea 1: Algoritmos de ordenación cuadráticos

Profs: Gonzalo Navarro, Benjamin Bustos

Auxs: José Manuel Moreno, Javier González, Rodrigo Paredes

Fecha de entrega: 28 de Agosto. Sin Atrasos


Objetivos

El objetivo de esta tarea es realizar una pequeña investigación experimental basada en tres algoritmos de ordenación de costo cuadrático.

Utilizar algoritmos iterativos.

Para realizar la implementación de los algoritmos se debe utilizar el lenguaje Java (disponible en las estaciones de trabajo del DCC y del CEC). No se permite el empleo de otro lenguaje.


Descripción de la tarea

    Deben analizar e implementar tres métodos de ordenación sencillos:
     


    Los métodos de ordenación deben generar conjuntos ordenados de menor a mayor.

    La característica que se va a medir es contar el número de comparaciones entre pares de elementos del conjunto a ordenar, por lo cual tienen que contemplar este requerimiento en la implementación de los algoritmos de ordenación.

    Luego tienen que realizar tres tipos de pruebas de ordenación:
     

    1. Un conjunto con elementos generados aleatoriamente (que por supuesto es un conjunto desordenado).
    2. El conjunto resultante de la prueba 1, con elementos ordenados de menor a mayor.
    3. El conjunto resultante de la prueba 1, con los elementos ordenados de mayor a menor.


    Variando el tamaño de los conjuntos para cada tipo de prueba, consideren conjuntos de tamaño 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000 y 10000 elementos. Consideren elementos enteros en el rango [0, 100000].

    Deben tener en cuenta que cuando generan elementos aleatorios, puede ocurrir que tengan elementos repetidos, luego tienen que adecuar el algoritmo para soportar el caso que se repitan elementos de modo de minimizar las comparaciones.

    El programa debe generar tres archivos de texto (insercion.txt, seleccion.txt y burbuja.txt) donde se muestren los resultados obtenidos según el siguiente formato:

    <nombreAlgoritmo>    <numElem>    <numCompAleatorio>    <numCompMenorMayor>    <numCompMayorMenor>

    Ejemplo:

    insercion.txt
    insercion    1000    <numCompAleatorio>    <numCompMenorMayor>    <numCompMayorMenor>
    insercion    2000    <numCompAleatorio>    <numCompMenorMayor>    <numCompMayorMenor>
    ...
    insercion    10000    <numCompAleatorio>    <numCompMenorMayor>    <numCompMayorMenor>

    En el informe tienen que presentar en tres tablas (generados aleatoriamente, de menor a mayor, de mayor a menor) los resultados obtenidos en las pruebas, y adjuntar un gráfico asociado a cada tabla. De este modo podrán comparar los tres algoritmos para cada tipo de prueba.

    Por último deben realizar el ajuste polinomial que corresponda a cada prueba para cada algoritmo (son 9 ajustes en total), y deben entregar una pequeña conclusión sobre qué algoritmo es mejor para cada caso (generados aleatoriamente, de menor a mayor y de mayor a menor).


Restricciones


Pruebas y Resultados

Las indicadas en la descripción de la tarea.



Ponderación

El informe equivale a un 50% de la nota de tarea.
El código equivale a un 50% de la nota de tarea.

Entrega de la tarea
 

La entrega de la tarea debe incluir un informe escrito donde se describa y documente el programa realizado, y se incluyan ejemplos de entradas y salidas.

El informe debe ser entregado en la Secretaría Docente de Computación (donde Magaly, segundo piso torre central, hasta las 17:00 horas del último día de plazo), y el código fuente (junto a un archivo README que explique como compilar) debe ser enviado utilizando el Cursomático de cc30a.

El contenido del informe debe seguir la siguiente pauta común para todas las tareas:
 

  • Portada