/** @(#)TestOrdenados.java 2009 adolfo@di-mare.com Datos de prueba para {@code Ordenados}. @author Adolfo Di Mare */ import junit.framework.*; /** Datos de prueba para la clase {@code Ordenados}. */ public class TestOrdenados extends TestCase { /** Retorna {@code true} si el vector {@code V[]} tiene valores ascendentes. * */ public static boolean esAscendente( int V[] ) { if ( V.equals(null) ) { // V[] no existe todavía return false; } else if ( V.length <= 1 ) { return true; } { /******************************\ * * * RELLENE CON SU ALGORITMO * * * \******************************/ } return true; } /** Retorna {@code true} si el vector {@code V[]} tiene valores descendentes. * */ public static boolean esDescendente( int V[] ) { if ( V.equals(null) ) { // V[] no existe todavía return false; } else if ( V.length <= 1 ) { return true; } { /******************************\ * * * RELLENE CON SU ALGORITMO * * * \******************************/ } return true; } /** Ordena ascendentemente los valores almacenados en el vector {@code V[]}. * */ public static void ordene( int V[] ) { if ( V.equals(null) ) { // V[] no existe todavía return; } int N = V.length; for ( int i=0; i < N-1; i++ ) { int iMenor = i; { /******************************\ * * * RELLENE CON SU ALGORITMO * * * \******************************/ } } } /** Graba el nombre {@code name} y el valor del vector {@code V[]}. */ public static void grabeVec( String name , int V[] ) { System.out.print("\n" + name + " "); for ( int i=0; i VEC_copia[j+1] ) { int temp = VEC_copia[j]; // intercambia VEC_copia[j] = VEC_copia[j+1]; // desordenados VEC_copia[j+1] = temp; } } } // usa "ordene()" para ordenar V[] ordene(V); // compara lo que produjo "ordene()" con el vector ordenado for ( int i=0; i {@code Ordenados.ordene()}. */ public void test_ordene() { { int V[]={0,1,1,1,1,1,0}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,0,0,0,0,0,0}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,0,0,0,0,0,1}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,1,1,1,0,0,0}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,1,1,1,1,1,0}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,1,1,1,1,1,1}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,1,1,1,2,2,2}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,2,3,4,4,5,4}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,2,3,4,4,5,6}; assertTrue( pruebe_ordene(V) ); } { int V[]={1,2,3,4,5,6,7}; assertTrue( pruebe_ordene(V) ); } { int V[]={1}; assertTrue( pruebe_ordene(V) ); } { int V[]={7,6,5,4,3,2,1}; assertTrue( pruebe_ordene(V) ); } { int V[]={}; assertTrue( pruebe_ordene(V) ); } } /** test -> {@code Ordenados.estaOrdenados()}. */ public void test_estaOrdenado() { { int V[]={1,2,3,4,5,6,7}; assertTrue( estaOrdenado( V ) ); } { int V[]={7,6,5,4,3,2,1}; assertTrue( estaOrdenado( V ) ); } { int V[]={1,2,3,4,4,5,6}; assertTrue( estaOrdenado( V ) ); } { int V[]={1,2,3,4,4,5,4}; assertFalse( estaOrdenado( V ) ); } { int V[]={1,1,1,1,1,1,1}; assertTrue( estaOrdenado( V ) ); } { int V[]={1,1,1,1,0,0,0}; assertTrue( estaOrdenado( V ) ); } { int V[]={1,1,1,1,2,2,2}; assertTrue( estaOrdenado( V ) ); } { int V[]={1,1,1,1,1,1,0}; assertTrue( estaOrdenado( V ) ); } { int V[]={0,1,1,1,1,1,0}; assertFalse( estaOrdenado( V ) ); } { int V[]={1,0,0,0,0,0,0}; assertTrue( estaOrdenado( V ) ); } { int V[]={1,0,0,0,0,0,1}; assertFalse( estaOrdenado( V ) ); } { int V[]={1}; assertTrue( estaOrdenado( V ) ); } { int V[]={}; assertTrue( estaOrdenado( V ) ); } } /** test -> {@code Ordenados.estaOrdenados()}. */ public void test_esAscendente() { { int V[]={1,2,3,4,5,6,7}; assertTrue( esAscendente( V ) ); } { int V[]={7,6,5,4,3,2,1}; assertTrue( esDescendente( V ) ); } { int V[]={1,2,3,4,4,5,6}; assertTrue( esAscendente( V ) ); } { int V[]={1,2,3,4,4,5,4}; assertFalse( esAscendente( V ) ); } { int V[]={1,2,3,4,4,5,4}; assertFalse( esDescendente( V ) ); } { int V[]={1,1,1,1,1,1,1}; assertTrue( esAscendente( V ) ); } { int V[]={1,1,1,1,1,1,1}; assertTrue( esDescendente( V ) ); } { int V[]={1,1,1,1,0,0,0}; assertTrue( esDescendente( V ) ); } { int V[]={1,1,1,1,2,2,2}; assertTrue( esAscendente( V ) ); } { int V[]={1,1,1,1,1,1,0}; assertTrue( esDescendente( V ) ); } { int V[]={0,1,1,1,1,1,0}; assertFalse( esAscendente( V ) ); } { int V[]={0,1,1,1,1,1,0}; assertFalse( esDescendente( V ) ); } { int V[]={1,0,0,0,0,0,0}; assertTrue( esDescendente( V ) ); } { int V[]={1,0,0,0,0,0,1}; assertFalse( esAscendente( V ) ); } { int V[]={1}; assertTrue( esAscendente( V ) ); } { int V[]={1}; assertTrue( esDescendente( V ) ); } { int V[]={}; assertTrue( esDescendente( V ) ); } } /** Retorna {@code true} si el vector {@code V[]} está ordenado. *
  • El orden puede ser ascendente o descendente.
  • *
  • Un vector nulo nunca está ordenado.
  • *
  • Un vector vacío siempre está ordenado.
*/ public static boolean estaOrdenado( int V[] ) { return (estaOrdenado_v1(V) && estaOrdenado_v2(V) && estaOrdenado_v3(V)); /* Esta implementación prueba las 3 implementaciones que están a * a continuación. */ } /** Retorna {@code true} si el vector {@code V[]} está ordenado. *
  • El orden puede ser ascendente o descendente.
  • *
  • Un vector nulo nunca está ordenado.
  • *
  • Un vector vacío siempre está ordenado.
*/ public static boolean estaOrdenado_v1( int V[] ) { return (esAscendente(V) || esDescendente(V)); } /** Retorna {@code true} si el vector {@code V[]} está ordenado. *
  • El orden puede ser ascendente o descendente.
  • *
  • Un vector nulo nunca está ordenado.
  • *
  • Un vector vacío siempre está ordenado.
*/ public static boolean estaOrdenado_v2( int V[] ) { if ( V.equals(null) ) { // V[] no existe todavía return false; } else if ( V.length <= 1 ) { return true; } boolean ascendentes = true; int N = V.length-1; for ( int i=0; i V[i+1] ) { ascendentes = false; // ... o si hay descendentes break; } else { // como son iguales, continúa... } } if ( ascendentes ) { // verifica ascendentes for ( int i=0; i V[i+1] ) { return false; } } } else { // verifica descendentes for ( int i=0; i
  • El orden puede ser ascendente o descendente.
  • *
  • Un vector nulo nunca está ordenado.
  • *
  • Un vector vacío siempre está ordenado.
  • */ public static boolean estaOrdenado_v3( int V[] ) { if ( V.equals(null) ) { // V[] no existe todavía return false; } else if ( V.length <= 1 ) { return true; } int i; int N = V.length-1; for ( i=0; i sí es ascendente return true; } else if ( V[i] < V[i+1] ) { for ( ; i V[i+1] ) { return false; } } } else { // verifica descendentes for ( ; i