Logo Revista Java

startjavaabout

articles

00. Prólogo (java)
01.a TEMAS INTRODUCTORIOS. (java)
01.b Comandos que Inician la Máquina de Java y la salida de texto (java)
01.c Descripción empírica de la Programación Orientada a Objetos con Java. (java)
01.d Herencia Soportada por Java y Tipos de Datos Básicos. (java)
01.e Operadores, Delimitadores Básicos Y los nombres de función Válidos. (java)
02.a Codificación Inicial y Estructuras de Datos. (java)
02.b Paquetes, y Palabras clave, (Reservadas) (java)
02.c Tipos de Datos, y declaraciones de funciones, Tablas. (java)
02.d Bucles y Tomas de decisión, Excepciones y Control de Errores. (java)
02.e Secuencias de Escape (java)
02.f Concatenación y Conversiones a Texto. (java)
02.g Métodos de Entrada y Salida de datos (java)
02.h Crear Objetos de la biblioteca de Java (java)
02.i Ejercicio: Entrada de Datos y Conversiones (if, try, catch) (java)
02.j Ejercicios, usando excepciones y while, y switch (java)
02.k Práctica complementaria Resuelta sin Arreglos. (java)
02.l Ejercicios de la práctica complementaria (java)
02.m Práctica complementaria resuelta Ej 6 y 7 (java)
02.m Práctica complementaria resuelta Ej 8 y 9 (java)
03.a Métodos estáticos y mecanismos de programación (java)
03.b Arreglos (Arrays o Vectores) (java)
03.c La clase Math como ayudante para resolver problemas (java)
03.d Usando arreglos para un buffer, colas de espera, pilas y listas. (java)
03.e Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) (java)
03.f Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) 2da parte (java)
03.g Implementación del buffer tipo LIFO (La pila, último en llegar es primero en salir) (java)
03.h Implementación del buffer tipo LIFO (La pila, último en llegar es primero en salir) 2da parte (java)
03.i Implementación de una Lista de datos. (java)
03.j Búsqueda Secuencial dentro de la lista de datos. (java)
03.k Búsqueda Aleatoria dentro de la lista de datos. (java)
03.l Búsqueda binaria dentro de una lista ordenada de datos. (java)
03.m Método para Ordenar - La Burbuja (java)
03.n Método para Ordenar - QuickSort Recursivo (java)
03.o Ejercicios Resueltos, ordenar con Java (java)
04.a Nuestro primer Objeto en Java (java)
04.b Codificación del primer Objeto en Java (java)
Ejemplos de la ventaja de tener ordenada una lista, la búsqueda binaria permite saber de que parte de la lista dividida en 2 está lo que buscamos y si seguimos dividiendo encontramos el resultado.

03.l Búsqueda binaria dentro de una lista ordenada de datos.

(381)
Ejemplos de la ventaja de tener ordenada una lista, la búsqueda binaria permite saber de que parte de la lista dividida en 2 está lo que buscamos y si seguimos dividiendo encontramos el resultado.
contact
Created,Modified
2009-04-02 12:03:42, 2009-05-07 19:12:12
Author,Nick
Gustavo Guillermo Perez, (madgus) [myblog]

Búsqueda Binaria (lista ordenada)

La búsqueda binaria es un método simple que se usa para encontrar datos en una lista ordenada, el mecanismo es el siguiente...

Si tenemos una lista de n datos, ordenados de mayor a menor y queremos encontrar uno en particular, haremos una búsqueda con dos índices, o sea almacenaremos el valor del elemento comparado más grande y más pequeño hasta arrinconar el resultado o llegar a un punto donde no existe tal elemento pero los dos mas cercanos son estos índices mayor y menor.


Ilustración 2: Búsqueda binaria en una lista ordenada

Método de la Burbuja, el diagrama que explica como se resuelve el ordenamiento de datos

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Veamos ahora un trozo de código para cuando la lista está ordenada de manera creciente y decreciente, estas dos funciones utilizan la fórmula que vimos en la ilustración anterior para calcular el índice superior e inferior, de esa manera y teniendo en cuenta que la operación de división será redondeada y sólo tendremos un número entero veamos como quedarían nuestras funciones.

Orden ascendente de Texto:

  1. public static String buscar_ordenado_az(String inicio){

  2. int Is=lista_elem-1;

  3. int Ii=0;

  4. int cmp=0;

  5. int old_cmp=-1;

  6. int compare;

  7. while (cmp!=old_cmp){

  8. old_cmp=cmp;

  9. cmp=(Is-Ii)/2+Ii;

  10. compare=lista[cmp].compareTo(inicio);

  11. if(compare==0){return lista[cmp];}

  12. if(compare<0){Ii=cmp;}

  13. if(compare>0){Is=cmp;}

  14. }

  15. return lista[Is];

  16. }

Orden descendente de texto:

  1. public static String buscar_ordenado_za(String inicio){

  2. int Is=lista_elem-1;

  3. int Ii=0;

  4. int cmp=0;

  5. int old_cmp=-1;

  6. int compare;

  7. while (cmp!=old_cmp){

  8. old_cmp=cmp;

  9. cmp=(Is-Ii)/2+Ii;

  10. compare=lista[cmp].compareTo(inicio);

  11. if(compare==0){return lista[cmp];}

  12. if(compare>0){Ii=cmp;}

  13. if(compare<0){Is=cmp;}

  14. }

  15. return lista[Ii];

  16. }

En estas dos funciones iguales, sólo cambian las comparaciones, el problema en este ejemplo es la manera en la que la función de la biblioteca efectúa la comparación, podemos crear nuestras propias funciones de comparación y evitar usar las de la biblioteca, pero, la biblioteca suele tener funciones optimizadas al nivel del sistema operativo y no la máquina virtual de Java, por lo tanto las usaremos siempre que podamos.

Nota: Queda para el lector agregar esta función al ejemplo de las listas y reconstruirla para el caso que los elementos sean números cualesquiera enteros en vez de objetos de texto.


leavecomment

*Hasta que esta leyenda no desaparezca el libro no ha sido terminado, descarge en pdf:

http://compunauta.com/forums/linux/programacion/java/ebook.html




Aprendiendo Java - Ejemplos resueltos, Ejercicios, prácicas y técnicas de programación con Java #1 - ezine - ©Compunauta - myblog - Anuncios - 1072