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)
Ahora en vez de buscar del primer al último elemento tomamos elementos al azar y los comparamos para ver si era lo que buscábamos.

03.k Búsqueda Aleatoria dentro de la lista de datos.

(333)
Ahora en vez de buscar del primer al último elemento tomamos elementos al azar y los comparamos para ver si era lo que buscábamos.
contact
Created,Modified
2009-04-02 12:01:37, 2009-05-07 19:11:36
Author,Nick
Gustavo Guillermo Perez, (madgus) [myblog]

Búsqueda aleatoria, desordenar lista.

Este método es completamente probabilístico y es funcional cuando el método binario u otro método más eficaz no visto sea aplicable. Es factible si el acceso a los datos es extremadamente lento, es decir si la búsqueda secuencial podría tardar horas para encontrar el último entre unos cuantos y queremos probar suerte (ya que las probabilidades de la búsqueda secuencial son las mismas), también sirve para desordenar una lista, por ejemplo para repartir “cartas mezcladas de un juego virtual”.

Ejemplo: En una situación donde la consulta en línea de archivos clasificados depende de personal humano para deducir la respuesta y la respuesta humana puede tardar minutos en encontrar por ejemplo un sello en una carpeta, la búsqueda se minimizaría de manera aleatoria si tenemos suerte, otro ejemplo sería buscar dentro de los archivos de una lista de archivos alojados en un servidor remoto completamente saturado y con escasas posibilidades de transferencia a alta velocidad, también minimizaríamos el tiempo de búsqueda de manera que en el peor de los casos nuestra respuesta estaría entre el 50% y el 100% de los últimos registros y en el mejor de los casos entre el 0% y el 50% de los primeros registros, de todas maneras es la misma probabilidad que la búsqueda secuencial así que solo el azar es el que influye.

Búsqueda desordenada de la lista:

  1. public static String buscar_desordenado(String patron){

  2. int[] indice=new int[lista_elem];

  3. int aleatorio;

  4. for (int i=0;i<lista_elem;i++) indice[i]=i;

  5. for (int i=lista_elem;i>0;i--){

  6. aleatorio=(int)(Math.random()*i);

  7. if(lista[indice[aleatorio]].indexOf(patron)!=-1) return lista[indice[aleatorio]]+":"+(lista_elem-i);

  8. for (int j=aleatorio;j<i-1;j++)indice[j]=indice[j+1];

  9. }

  10. return null;

  11. }

Fabricamos un índice para acceder a la lista, con la cantidad de elementos actual y no la máxima que es su capacidad, ya que será de manera temporal y local a la función, todos los objetos y variables declarados dentro de una función a menos que sean declarados estáticos se perderán y se liberará memoria del sistema.

Rellenamos el índice con los elementos desde el 0 al máximo menos uno. Extraemos al azar un elemento del índice y recorremos los demás hasta el que quitamos, así comparamos un elemento de la lista al azar y terminamos si lo encontramos.

Nota: El tipo de búsqueda no es exacto ya que usamos indexOf en vez de equals. Queda para el lector agregar esta función en el ejemplo anterior y probarla.

Desordenar la lista:

  1. public static void desordenar(){

  2. int[] indice=new int[lista_elem];

  3. String[] desordenado=new String[lista_elem];

  4. int des_elem=0;

  5. int aleatorio;

  6. for (int i=0;i<lista_elem;i++) indice[i]=i;

  7. for (int i=lista_elem;i>0;i--){

  8. aleatorio=(int)(Math.random()*i);

  9. desordenado[des_elem++]=lista[indice[aleatorio]];

  10. for (int j=aleatorio;j<i-1;j++)indice[j]=indice[j+1];

  11. }

  12. for (int i=0;i<lista_elem;i++) lista[i]=desordenado[i];

  13. }

Para desordenar la lista estamos usando una lista temporal, con su respectivo contador e índice variable de elementos.

Nota: Queda como tarea para el lector optimizar esta función para que no sea necesaria la lista temporal que en caso de escasos recursos y enormes listas no sería algo permitido, utilizando sólo 1 objeto temporal del tipo String para intercambiar valores y eliminar el uso del índice temporal.


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 - 1060