búsqueda en vector
TRANSCRIPT
![Page 1: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/1.jpg)
PROGRAMACIÓN ORIENTADA A OBJETOS 1
VectoresBúsqueda
Ing. Magda Paola Fernández Echeverri
![Page 2: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/2.jpg)
Tabla de contenido
Búsqueda Lineal
Búsqueda Binaria
![Page 3: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/3.jpg)
Búsqueda Lineal
La búsqueda lineal en un arreglo, consiste en la implementación de un proceso iterativo que recorre todo el arreglo .
Se debe contar con un índice que inicia en 0 e incrementa en cada iteración. Y con la condición que permita comparar la variable que contiene el valor a buscar contra el contenido del arreglo.
![Page 4: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/4.jpg)
Ejemplo
Variable
15
Dato_buscar
• Guardemos dentro del vector: multiplos de 5 posiciones , los múltiplos de 5.
Vector unidimensional multiplos
5 10 15 20 25
0 1 2 3 4Índice
Valores
• La variable Dato_buscar contendrá el valor a buscar dentro del arreglo multiplos.
![Page 5: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/5.jpg)
• Si el valor a buscar es igual al valor del arreglo en índice actual. Debe retornar el valor del índice. En nuestro ejemplo el valor que retorna es 2
Vector unidimensional multiplos
5 10 15 20 25
0 1 2 3 4Índice
15Variable
Dato_buscar
• Se debe compara la variable Dato_buscar con cada uno de los valores que se encuentran en el arreglo multiplos.
![Page 6: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/6.jpg)
Vector unidimensional multiplos
5 10 15 20 25
0 1 2 3 4Índice
8Variable
Dato_buscar
• Si al compara todo el arreglo en ningún caso encuentra el valor, retorna el valor -1.
como vemos el valor a buscar es 8 y no se encuentra en el arreglo multiplos.
![Page 7: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/7.jpg)
Veamos el ejemplo en JAVA• Se crea la clase arreglo_multiplos como se ve en la imagen:
![Page 8: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/8.jpg)
• Al correr el programa se vería por consola:
• Ahora se crea el método buscar en la clase arreglos_multiplos
![Page 9: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/9.jpg)
• Como el método buscar se creo fuera del método main, se debe instanciar la clase arreglo_multiplos dentro de main, para llamar el metodo buscar.
arreglo_multiplos todo= new arreglo_multiplos();int indice= todo.buscar(multiplos, 15);
System.out.println("El indice del valor 15 es: " + indice);
Se llama el metodo buscar y se envían los valores del arreglo y el valor a buscar que en esta caso es 15.
![Page 10: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/10.jpg)
![Page 11: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/11.jpg)
• Al correr el programa saldría por consola:
• Si en lugar de buscar 15 lo cambiamos por 30, un valor que no se encuentra en el vector:
![Page 12: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/12.jpg)
• Al correr el programa saldría por consola:
• Retornaría el valor de -1
![Page 13: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/13.jpg)
Búsqueda BinariaEs la implementación de un proceso recursivo que recibe el arreglo y el valor que se desea buscar . Esta búsqueda debe realizarse con valores ordenados. Se inicia consultando el valor ubicado en la mitad del arreglo.
Si el valor a buscar es igual se retorna al índice.Si el valor es menor, se hace el llamado recursivo realizando la búsqueda con los valores desde la posición inicial, hasta la
posición anterior a la mitad.Pero si no hay elementos entre estas posiciones , retorna -1.
Si el valor a buscar es mayor, se hace el llamado recursivo realizando la búsqueda con los valores desde la posición
siguiente a la mitad hasta la última posición; pero si no hay elementos entre estas posiciones retorna -1.
![Page 14: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/14.jpg)
Ejemplo
Vector unidimensional
multiplos
0 1 2 3 4 5 6 7 8 9
Posición Inicial
30 35 40 45 505 10 15 20 25
Int multiplos[ ] = new int [10];
• Guardemos dentro del vector: multiplos de 10 posiciones , los múltiplos del 5.
Índice
Posición Final
posFin= multiplos.length -1posIni= 0
Posición centro
poscen= (posIni+posFin) / 2
![Page 15: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/15.jpg)
• Si el valor a buscar es igual que el valor que se encuentra en la mitad, retorna indice.
30 35 40 45 505 10 15 20 25
multiplos
15Variable
Dato_buscar
0 1 2 3 4 5 6 7 8 9
Posición centro
if (Dato_buscar == multiplos[poscen ]){ return poscen;}
poscen= (posIni+posFin) / 2
![Page 16: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/16.jpg)
• Si el valor a buscar no es igual al valor del arreglo en la posición centro, se pregunta si es menor que la posición centro y si no es menor o igual a posición inicial de esta forma buscar solo en esta parte del vector
30 35 40 45 505 10 15 20 25
0 1 2 3 4 5 6 7 8 9
‘
posIni= 0 poscen= (posIni+posFin) / 2posFin= multiplos.length -1
• De lo contrario si no es menor que posición centro buscara después de la mitad, entre centro + 1 y posición final
30 35 40 45 505 10 15 20 25
0 1 2 3 4 5 6 7 8 9‘
posIni= 0 poscen= (posIni+posFin) / 2 posFin= multiplos.length -1
![Page 17: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/17.jpg)
Veamos el ejemplo en JAVA
![Page 18: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/18.jpg)
![Page 19: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/19.jpg)
• Al correr el programa saldría por consola cuando el numero a buscar es 15:
![Page 20: Búsqueda en vector](https://reader036.vdocuments.co/reader036/viewer/2022082905/5878967e1a28ab375f8b6a1f/html5/thumbnails/20.jpg)
BibliografíaFLOREZ FERNANDEZ, H. (2012). “Arreglos, Matrices y Colecciones” en Flórez Fernández, H. Programación Orientada a Objetos usando JAVA. Ecoe Ediciones. España. P. 75 - 78