Sei sulla pagina 1di 12

Anlisis y diseo de software dit

UPM

ejercicio 1

Jos A. Maas
15.2.2017
ejercicio 1
algoritmos de ordenacin
insercin
mezclas
programar y probar
medir, tabular, representar con correlator
complejidad media

ADSW 2
abstract class StringSorter
/** descargar
* Clases que ordenan arrays de String.
*/
public abstract class StringSorter {
public abstract void sort(String[] datos);

/**
* Intercambio.
* Lo que hay en la posicion i pasa a la posicion j.
* Lo que hay en la posicion j pasa a la posicion i.
*/
void swap(String[] datos, int i, int j) { } /**
* Predicado.
* @param datos Strings.
* @return TRUE si los datos estan ordenados.
*/
boolean isSorted(String[] datos) { }

/**
* Predicado.
* @param datos Strings.
* @return TRUE si los datos estan ordenados entre [a, z).
*/
boolean isSorted(String[] datos, int a, int z) { }
ADSW } 3
class OpMeter
/** descargar
* Clase auxiliar para contar cuantas veces se llama a un metodo.
* Util para medir complejidad de algoritmos.
*/
public class OpMeter {
private static long ops;

/**
* Pone a cero el contador.
* @return numero de operaciones, que son 0.
*/
public static long reset() { }
/**
/** * Wrapper del metodo de comparacion de String.
* Getter. *
* @return numero de operaciones desde el reset. * @param s1 una cadena.
*/ * @param s2 otra cadena.
public static long getOps() { } * @return 0 si son iguales;
* un valor negativo si s1 va antes que s2;
* un valor positivo si s1 va despues que s2.
* @see String#compareTo(String)
*/
public static int compareTo(String s1, String s2) { }
}
ADSW 4
TestSort
import org.junit.Before;
import org.junit.Test; probar el mtodo sort()
import java.util.Random;
casos normales
casos singulares
import static org.junit.Assert.assertTrue; excepciones
datos aleatorios
public class TestSort {
// sin semilla, realmente aleatorio; cada ejecucin, datos nuevos
// monkey testing
private final Random random = new Random();

// marcamos la semilla, cualquiera, para que sean pruebas repetibles


// private final Random random = new Random(0);

// objeto de las pruebas


private StringSorter sorter;

@Before
public void setUp() { sorter = new InsertionSort(); }

@Test
public void testSort0() { }

ADSW 5
tareas
1. preparar pruebas: TestSort
2. preparar las implementaciones
class InsertionSort extends StringSorter
class MergeSort extends StringSorter
3. poner a punto usando las pruebas
4. medir operaciones: Meter1
hay que tunear los algoritmos para usar
OpMeter.compareTo()
5. entregar

ADSW 6
mediciones
cargamos N datos aleatorios
N= 100, 200, 500, 1.000, 2.000, 5.000, 10.000
medimos el nmero de operaciones para
ordenarlos

ADSW 7
entrega
package es.upm.dit.adsw.ej1
InsertionSort.java
MergeSort.java
TestSort.java
Meter1.java
Grficas de correlacin donde se vea
claramente su complejidad
en formato PDF
lo puede generar con Powerpoint, Word, o similares

ADSW 8
ejemplo
ejemplos
siguen algunos ejemplos de resultados
obtenidos por los profesores
selos a modo de gua
de qu tiene que hacer con SUS datos y
lo que tiene que presentar como memoria del
ejercicio

ADSW 9
ejemplo
algoritmo de insercin

ADSW 10
ejemplo
algoritmo de insercin
es O(n)? no cuadra

ADSW 11
ejemplo
algoritmo de insercin
es O(n2)? corroborado

ADSW 12

Potrebbero piacerti anche