Fhernd

AppEjercicio3.java

Jul 23rd, 2012
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.96 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class AppEjercicio3
  6. {
  7.     private int[] arregloDatos;
  8.     private int elementos;
  9.    
  10.     public int busquedaBinaria( int clave )
  11.     {
  12.         int bajo = 0; // parte inferior del área de búsqueda.
  13.         int alto = arregloDatos.length - 1; // parte superior del área de búsqueda.
  14.         int mitad = ( bajo + alto ) / 2; // elemento de la mitad
  15.         int ubicacion = -1; // return valor; -1 si no fue encontrado
  16.        
  17.         do // empieza la búsqueda del elemento
  18.         {
  19.             // si el elemento es encontrado en la mitad del arreglo
  20.             if( clave == arregloDatos[ mitad ] )
  21.             {
  22.                 ubicacion = mitad; //
  23.             }
  24.            
  25.             // elemento de la mitad es superior
  26.             else if( clave < arregloDatos[ mitad ] )
  27.             {
  28.                 alto = mitad - 1; // elimina la mitad mayor
  29.             }
  30.             else
  31.             {
  32.                 bajo = mitad + 1; // elimina la mitad inferior
  33.             }
  34.            
  35.             mitad = ( bajo + alto + 1 ) / 2; // recalcula la mitad del arreglo
  36.         } while( ( bajo <= alto ) && ( ubicacion == -1 ) );
  37.        
  38.         return( ubicacion );
  39.     } // fin del método búsqueda binaria
  40.    
  41.     /**
  42.      * Lee los datos para el arreglo desde el teclado introducidos por el usuario de la aplicación.
  43.      */
  44.     public void insertarDatos()
  45.     {
  46.         InputStreamReader isr = new InputStreamReader( System.in );
  47.         BufferedReader br = new BufferedReader( isr );
  48.        
  49.         for (int i = 1; i <= elementos; ++i )
  50.         {
  51.             System.out.print( "Dígite un número: " );
  52.            
  53.             try
  54.             {
  55.                 arregloDatos[ i - 1 ] = Integer.parseInt( br.readLine() );
  56.             }
  57.             catch (NumberFormatException e) // formato de número inválido
  58.             {
  59.                 e.printStackTrace();
  60.             }
  61.             catch (IOException e)
  62.             {
  63.                 e.printStackTrace();
  64.             }
  65.         } // fin de for
  66.     } // fin del método insertarDatos
  67.    
  68.     /**
  69.      * Permite ingresar el número de elementos a ingresar.
  70.      */
  71.     public void numeroElementosAInserter()
  72.     {
  73.         InputStreamReader isr = new InputStreamReader( System.in );
  74.        
  75.         BufferedReader br = new BufferedReader( isr );
  76.        
  77.         try
  78.         {
  79.             System.out.print( "Digite el número de elementos a insertar: " );
  80.             elementos = Integer.parseInt( br.readLine() );
  81.         }
  82.         catch( NumberFormatException nfe )
  83.         {
  84.             nfe.printStackTrace();
  85.         }
  86.         catch( IOException ioe )
  87.         {
  88.             ioe.printStackTrace();
  89.         }
  90.        
  91.         // crea el arreglo de datos
  92.         arregloDatos = new int[ elementos ];
  93.     } // fin del método numeroElementosAInsertar
  94.    
  95.     /**
  96.      * Ordena el arreglo de datos de menor a mayor.
  97.      */
  98.     public void ordenarAscendente()
  99.     {
  100.         int menor; // indice del elemento menor
  101.        
  102.         for (int i = 0; i < arregloDatos.length; i++)
  103.         {
  104.             menor = i;
  105.            
  106.             // ciclo para la búsqueda del índice menor
  107.             for (int index = i + 1; index < arregloDatos.length; index++ )
  108.             {
  109.                 if( arregloDatos[ index ] < arregloDatos[ menor ] )
  110.                 {
  111.                     menor = index;
  112.                 }
  113.             }
  114.            
  115.             intercambiar( i, menor ); //
  116.         } // fin de for
  117.     } // fin del método ordenarAscendente
  118.  
  119.     /**
  120.      * Intercambia dos elementos del arreglo arregloDatos.
  121.      * @param primeraPosicion Representa la primera posición a ser alternada.
  122.      * @param segundaPosicion Representa la segunda posición a ser alternada.
  123.      */
  124.     private void intercambiar(int primeraPosicion, int segundaPosicion )
  125.     {
  126.         int temp = arregloDatos[ primeraPosicion ]; // almacena el primero en una variable temporal
  127.         arregloDatos[ primeraPosicion ] = arregloDatos[ segundaPosicion ];
  128.         arregloDatos[ segundaPosicion ] = temp; // asigna temp a la segunda posición
  129.     } // fin del método intercambiar.
  130.    
  131.     /**
  132.      * Imprime arreglo.
  133.      */
  134.     public void imprimirArreglo()
  135.     {
  136.         for (int i = 0; i < arregloDatos.length; i++ )
  137.         {
  138.             if( i < ( arregloDatos.length - 1 ) )
  139.             {
  140.                 System.out.print( arregloDatos[ i ] + ", " );
  141.             }
  142.             else
  143.             {
  144.                 System.out.print( arregloDatos[ i ] );
  145.             }
  146.         }
  147.     } // fin del método imprimirArreglo.
  148.    
  149.     /**
  150.      * Punto de inicio de la aplicación.
  151.      * @param args Conjunto de argumentos procedentes desde la consola o terminal.
  152.      */
  153.     public static void main( String[] args )
  154.     {
  155.         // Instancia un objeto de tipo AppEjercicio3.
  156.         AppEjercicio3 app3 = new AppEjercicio3();
  157.        
  158.         // especifica la cantidad de elementos que se intertaran en el arreglo de datos.
  159.         app3.numeroElementosAInserter();
  160.        
  161.         // inserta datos en el arreglo.
  162.         app3.insertarDatos();
  163.        
  164.         // imprime por primera vez el arreglo de datos:
  165.         System.out.println();
  166.         System.out.println();
  167.         app3.imprimirArreglo();
  168.        
  169.         // realiza ordenamiento de los datos en modo ascendente.
  170.         app3.ordenarAscendente();
  171.        
  172.         // vuelve a imprimir el contenido del arreglo.
  173.         System.out.println();
  174.         System.out.println();
  175.         app3.imprimirArreglo();
  176.        
  177.         // búsqueda binaria en el contenido del arreglo de datos.
  178.         if( app3.busquedaBinaria( 3 ) != -1 )
  179.         {
  180.             System.out.println( "\n\nEl dato 3 se se encontró en la posición: " + ( app3.busquedaBinaria( 3 ) + 1 ) );
  181.         }
  182.         else
  183.         {
  184.             System.out.println( "\n\nEl dato 3 no se encontró." );
  185.         }
  186.     } // fin de main
  187. } // fin de la clase AppEjercicio3
Add Comment
Please, Sign In to add comment