0% encontró este documento útil (0 votos)
41 vistas21 páginas

Equipo03 Practica04 EDAII G09

Este documento presenta dos algoritmos de búsqueda por comparación: la búsqueda lineal y la búsqueda binaria. La búsqueda lineal revisa cada elemento de la lista de forma secuencial hasta encontrar el elemento buscado, con una complejidad de O(n). La búsqueda binaria divide la lista a la mitad en cada paso para reducir el espacio de búsqueda, logrando una complejidad de O(log n). Se proveen pseudocódigos de ambos algoritmos.

Cargado por

Jesus Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
41 vistas21 páginas

Equipo03 Practica04 EDAII G09

Este documento presenta dos algoritmos de búsqueda por comparación: la búsqueda lineal y la búsqueda binaria. La búsqueda lineal revisa cada elemento de la lista de forma secuencial hasta encontrar el elemento buscado, con una complejidad de O(n). La búsqueda binaria divide la lista a la mitad en cada paso para reducir el espacio de búsqueda, logrando una complejidad de O(log n). Se proveen pseudocódigos de ambos algoritmos.

Cargado por

Jesus Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

Carátula para entrega de prácticas

Facultad de Ingeniería Laboratorio de docencia

Laboratorios de computación
salas A y B
Profesor: M.C. GERARDO TOVAR TAPIA

Asignatura: Estructura de Datos y Algoritmos II

Grupo: 09

No. de práctica(s): 04

Bohorquez Oclica Nancy 31916723-4


Integrante(s): Ciriaco Vargas José Arturo 31925722-1
Díaz González Ángel Iñaqui 31903399-3
García Vázquez Jesús Alejandro 31922712-9
Gutiérrez Preza Diego 31915671-5
Villeda Tlecuitl José Eduardo 31928199-8
No. de lista o brigada:
Brigada 03

Semestre: 2023-1

Fecha de entrega: Jueves, 27 de Octubre del 2022

Observaciones:

CALIFICACIÓN: __________
Índice

Nombre Página
Introducción 3
Desarrollo
Actividad 1 11
Actividad 2 12
Actividad 3 13
Actividad 4 14
Actividad 5 15
Actividad 6 16
Actividad 7 18
Conclusiones 19
Referencias 21
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 3
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

Guía Práctica de Estudio 4

Algoritmos de búsqueda parte 1 

Elaborado por:

M.I. Elba Karen Sáenz García

Revisión:

Ing. Laura Sandoval Montaño

35 
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 4
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

Guía Práctica 4 
Estructura de datos y Algoritmos II 

Algoritmos de Búsqueda.  Parte 1. 
Objetivo:  El estudiante identificará el comportamiento y características de algunos algoritmos de búsqueda
por comparación de llaves. 

Actividades 
 Implementar  el  algoritmo  iterativo  y  recursivo  de  búsqueda  lineal  en  algún  lenguaje  de  programación
para localizar alguna llave o valor en una secuencia de datos.
 Implementar el algoritmo iterativo y recursivo de búsqueda binaria en algún lenguaje de programación
para localizar alguna llave o valor en una secuencia de datos.

Antecedentes 
 Análisis previo de los algoritmos en clase teórica.
 Conocimiento de algún algoritmo de ordenamiento.
 Manejo de arreglos o listas, estructuras de control y funciones en Python 3.

Introducción 
Recuperar  información  de  una  computadora  es  una  de  las  actividades  más  útiles  e  importantes,  muy 
comúnmente se  tiene un  nombre o llave que se quiere encontrar en una estructura de datos tales  como una 
lista u arreglo. 

Al proceso de encontrar un dato específico llamado llave en alguna estructura de datos, se denomina búsqueda.  
Este proceso termina exitosamente cuando se localiza el elemento que contienen la llave buscada, o termina sin 
éxito, cuando no aparece ningún elemento con esa llave. 

Los algoritmos de búsqueda se pueden clasificar en: 
 Búsqueda por comparación
 Búsqueda por transformación de llaves

4
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 5
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

En  este  documento  se  describen  dos  de  los  algoritmos  de  búsqueda  por  comparación:  la  búsqueda  lineal  o 
secuencial y la búsqueda binaria, que son dos de las técnicas más comunes; la primera por sencilla y la otra por 
eficiente. 

Búsqueda Lineal 

En este algoritmo se empieza a buscar desde la primera posición de la lista, comparando el elemento con la llave 
y  si  no  se  encuentra  continúa  verificando  las  siguientes  posiciones  hasta  encontrarlo,  entonces  el  algoritmo 
termina. Así el elemento a buscar puede estar en el primer elemento, el último o entre ellos. 

A continuación, se muestra un algoritmo en pseudocódigo de una función que realiza la búsqueda secuencial del 
elemento 𝑥 en una lista implementada como un arreglo lineal 𝐴 0,1,2, … 𝑛 1  de 𝑛 elementos. El cual retorna 
la  posición  o  índice  del  arreglo  donde  se  encuentra  el  elemento  𝑥  a  buscar,  y  el  valor  de  1  si  𝑥  no  fue 
encontrado.  

BúsquedaLineal (A,n,x )
Inicio
encontrado=-1
Para k=0 hasta n-1
Si x==A[k]
encontrado = k
Fin Si
Fin Para
Retorna encontrado
Fin

Como se puede observar en la función BúsquedaLineal( ), el número de iteraciones siempre es igual al tamaño del 
arreglo 𝐴 , independientemente de dónde se encuentre el elemento a buscar y  como todas las operaciones del 
interior de la estructura de repetición  tienen una complejidad  constante, la complejidad  de este algoritmo de 
búsqueda secuencial es de 𝑂 𝑛 . 

Existen  varias  mejoras  al algoritmo,  una  de  ellas  es  no  esperar  a  revisar  todos  los  elementos  del  arreglo,  si  el 
buscado ya se encontró, entonces se tiene que terminar. Una forma de conseguirlo es revisar en cada iteración 
𝑘, si el elemento a buscar 𝑥 es ya igual al elemento 𝐴 𝐾  , y si lo es, entonces retornar la posición del elemento 
encontrado  y  terminar.  A  continuación,  se  muestra  una  posible  función  en  pseudocódigo  donde  se  considera 
esta mejora [1]. 

5
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 6
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

BúsquedaLinealMejorado
Inicio
encontrado=-1
Para k=0 hasta n-1
Si A[k]==x
encontrado= k
Salir de la estructura de repetición
Fin Si
Fin Para
retorna encontrado
Fin

También se tiene la llamada búsqueda secuencial con centinela que asegura siempre encontrar el elemento a 
buscar.  Lo  que  se  hace  es  situar  el  valor  que  se  está  buscando  al  final  del  arreglo  𝐴 𝑛 1   (centinela), 
guardando lo que se encuentra inicialmente ahí en algún lugar temporal. Así en la estructura de repetición que 
va  revisando  todos  los  elementos  de  𝐴  siempre  se  obtiene  un  valor  del  índice  𝑘  donde  se  encuentra  el 
elemento.  

Al término de las iteraciones se regresa el valor inicial del elemento 𝐴 𝑛 1  a su lugar y solo resta verificar si 
éste o el posicionado en 𝑘 𝑛 1 es el valor buscado, si no es ninguno de ellos, entonces, el elemento no está 
en la lista. 
Lo anterior se puede representar en la siguiente función en pseudocódigo [1] 

BusquedaLinealCentinela(A,n,x )
tmp=A[n-1]
A[n-1]=x
k=0
Mientras A[k] sea diferente de x
k=k+1
Fin Mientras

A[n-1]=tmp

Si k < n-1 o A[n-1]==x


retorna k
En otro caso
retorna -1
Fin Si
Fin

6
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 7
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

En estos dos últimos algoritmos el tiempo de ejecución en el mejor de los casos se da cuando el valor a buscar se 
encuentra en el primer elemento de la lista y es  𝜃(1). En el peor de los casos cuando está en la última posición y 
es  𝜃(n). 

Existe una versión recursiva del algoritmo de búsqueda lineal, donde se tendrá un caso base de fracaso que se 
da  cuando  se  rebasa  el  número  de  elementos  de  la  lista  y  un  caso  base  de  éxito  cuando  después  de  algunas 
llamadas recursivas el elemento analizado de la lista es igual a la llave.  Un algoritmo en pseudocódigo se puede 
plantear como se muestra en la siguiente función. 

BusquedaLinealRecursiva (A,x,ini,fin)
Inicio
Si ini > fin
encontrado=-1
Si no
Si A[ini]==x
encontrado=ini
Si no
encontrado = BusquedaLinealRecursiva(A, x,ini+1,fin)
Fin Si no
Fin Si no
retorna encontrado
Fin

Búsqueda Binaria  

El algoritmo de búsqueda binaria o también llamado dicotómica es eficiente para encontrar un elemento en una 
lista ya ordenada y es un ejemplo de la técnica divide y conquista. Es como buscar una palabra en un diccionario, 
donde dependiendo de la primera letra de la palabra a buscar se abre el libro cerca del principio, del centro o al 
final. Se puede tener suerte y haber abierto la página correcta o bien moverse a paginas posteriores o anteriores 
del libro. 

Entonces  en  el  algoritmo  se  divide  repetidamente  a  la  mitad  la  porción  de  la  lista  que  podría  contener  al 
elemento, hasta reducir las ubicaciones posibles a solo una.  La estrategia consiste en comparar una llave con el 
elemento de en medio de la lista, si es igual entonces se encontró el elemento, sino, cuando 𝑥 es menor que el 
elemento del medio se aplica la misma estrategia a la lista de la izquierda y si 𝑥 es mayor, a la lista de la derecha. 

7
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 8
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

Para  describir  el  algoritmo  con  más  detalle,  se  supone  una  la  lista  ordenada  de  forma  ascendente  que  está 
almacenada en un arreglo unidimensional 𝐴 0, … , 𝑛 1  de 𝑛 elementos y se quiere encontrar la llave 𝑥.  

1. Primero se calcula el índice del punto medio del arreglo utilizando los índices de inicio (izquierdo) y fin
(derecho) de la lista o sublista de búsqueda, 𝑚𝑒𝑑𝑖𝑜  , para poder dividir
la lista en dos sub‐listas Figura 4.1.
medio 

Índice Izquierdo = 0   Índice Derecho = n‐1 

Sub‐lista izquierda  Sub‐lista  derecha 

Figura 4.1 

2. Después se compara el punto 𝑚𝑒𝑑𝑖𝑜 con la llave a buscar 𝑥,

a) Si son iguales, entonces la llave fue encontrada, y el algoritmo termina. Figura 4.2.

Índice Izquierdo = 0   𝑥 𝑚𝑒𝑑𝑖𝑜  Índice Derecho = n‐1 

Figura 4.2 

b) Si el valor del arreglo 𝐴 con índice 𝑚𝑒𝑑𝑖𝑜 es mayor a la llave 𝑥 (𝐴 𝑚𝑒𝑑𝑖𝑜 𝑥), se descarta la sub‐lista


de la derecha incluyendo el punto 𝑚𝑒𝑑𝑖𝑜 y se regresa al paso 1, donde la nueva sub‐lista de búsqueda
mantiene el índice izquierdo y el índice derecho cambia a 𝑚𝑒𝑑𝑖𝑜 1.Figura 4.3

Índice derecho = medio ‐1  
Índice Izquierdo 

Figura 4.3 
c) Si el valor del arreglo 𝐴 con índice 𝑚𝑒𝑑𝑖𝑜 es menor a la llave 𝑥 (𝐴 𝑚𝑒𝑑𝑖𝑜 𝑥), se descarta la sub‐lista
de la izquierda incluyendo el punto medio y se regresa al paso 1, donde la nueva sub‐lista de búsqueda
mantiene el índice derecho y el índice izquierdo cambia a 𝑚𝑒𝑑𝑖𝑜 1.Figura 4.4.
Índice Izquierdo = medio  Índice Derecho 

Figura 4.4


Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 9
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

Si en algún momento la sub‐lista de búsqueda tiene longitud 0 o negativa significa que el valor buscado no se 
encuentra en la lista. 

Ejemplo: Se quiere buscar el elemento 𝑥 18 en un arreglo unidimensional de 13 elementos que contiene los 
siguientes datos, los cuales ya están ordenados: 

0  1  2  3  4  5  6   7   8    9  10  11   12 


10  12  13  14  18  20  25  27  30  35  40  45  47 

Donde í𝑛𝑑𝑖𝑐𝑒 𝑖𝑧𝑞𝑢𝑖𝑒𝑟𝑑𝑜 0 e í𝑛𝑑𝑖𝑐𝑒 𝑑𝑒𝑟𝑒𝑐ℎ𝑜 12.


𝑚𝑒𝑑𝑖𝑜 6 , 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐴 𝑚𝑒𝑑𝑖𝑜 25.

Se compara 18 con 25, como 18 25, ahora se trabaja con la sub‐lista izquierda: 

0  1  2  3  4  5 
10  12  13  14  18  20 

Donde í𝑛𝑑𝑖𝑐𝑒 𝑖𝑧𝑞𝑢𝑖𝑒𝑟𝑑𝑜 0 e í𝑛𝑑𝑖𝑐𝑒 𝑑𝑒𝑟𝑒𝑐ℎ𝑜 6 1 5.


5
𝑚𝑒𝑑𝑖𝑜 2 , 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐴 𝑚𝑒𝑑𝑖𝑜 13.
2

Se compara 18 con 13, como 18 13, ahora se trabaja con la sub‐lista derecha: 

3  4  5 
14  18  20 

Donde í𝑛𝑑𝑖𝑐𝑒 𝑖𝑧𝑞𝑢𝑖𝑒𝑟𝑑𝑜 𝑚𝑒𝑑𝑖𝑜 1 3 e í𝑛𝑑𝑖𝑐𝑒 𝑑𝑒𝑟𝑒𝑐ℎ𝑜 5.


𝑚𝑒𝑑𝑖𝑜 4 , 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐴 𝑚𝑒𝑑𝑖𝑜 18. 

Se observa que  𝐴 𝑚𝑒𝑑𝑖𝑜  es igual 𝑥 18, entonces el algoritmo termina. 

Una función del algoritmo en pseudocódigo de la búsqueda binaria descrita es: 


Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 10
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

BusquedaBinariaIterativa(A,x,indiceIzq,indiceDer) 
Inicio 
 Encontrado= ‐1 
 Mientras indiceIzq <= indiceDer 
   Medio=⌊ 𝑖𝑛𝑑𝑖𝑐𝑒𝐼𝑧𝑞 𝐼𝑛𝑑𝑖𝑐𝑒𝐷𝑒𝑟 /2⌋ 
Si x == A[Medio] entonces 
      Encontrado=Medio 
Si no 
 Si   A[medio] < x 
indiceIzq=medio +1 
Si no 
indiceDer=medio‐1 
 Fin Si no 
Fin Si no 
  Fin Mientras 
  Retorna Encontrado 
Fin 

El algoritmo de búsqueda binaria también tiene un enfoque recursivo. Donde se tiene un caso base de fracaso, 
que sucede cuando se sobrepasa el número de elementos de la lista y un caso base de éxito, cuando después de 
algunas llamadas recursivas el elemento 𝐴 𝑚𝑒𝑑𝑖𝑜  es igual a la llave 𝑥. 
A continuación, se muestra una función en pseudocódido que ilustra la forma recursiva: 

BusquedaBinariaRecursiva(A,x,indiceIzq,indiceDer)
Inicio
Si indiceIzquierdo > indiceDerecho y x es diferente de A[indiceDerecho]
Retorna -1
Fin Si
𝑚𝑒𝑑𝑖𝑜 ⌊ 𝑖𝑛𝑑𝑖𝑐𝑒𝐼𝑧𝑞 𝐼𝑛𝑑𝑖𝑐𝑒𝐷𝑒𝑟 /2⌋
Si x==A[medio]
Retorna medio
En otro caso
Si x < A[medio]
Retorna BusquedaBinariaRecursiva(A,x,indiceIzquierdo,medio)
En otro caso
Retorna BusquedaBinariaRecursiva(A,x,medio, indiceDerecho)
Fin Si
Fin Si
Fin

10 
Desarrollo
Actividades complementarias práctica 4

Actividad 1

Tomando como referencia el código de búsqueda lineal analizado en clase, implementar la


siguiente función, y explicar el código una vez que funcione.

La función busquedaLineal recorre todo el arreglo y compara el elemento que queremos


encontrar con cada dato del arreglo, si lo encuentra se le asigna el valor del indice de
nuestro valor a la variable encontrado, así, si el elemento no está nos devolvera un -1 y nos
imprimirá en pantalla que no se encontró.
Código

Actividad 1.pý
Ejecución

Ejecución de Actividad 1.pý

11
Actividad 2

Tomando como referencia el código de búsqueda lineal analizado en clase, implementar la


siguiente función, y explicar el código una vez que funcione (En qué consiste la mejora).

La mejora consiste en poner un break después de asignar k a encontrado, esto permite que
una vez que se encontró el valor buscado, ya no realice todas las iteraciones del for, esto se
debe a que resultan innecesarias si se encontró el valor buscado en el arreglo.
Código

Actividad 2.pý
Ejecución

Ejecución de Actividad 2.pý

12
Actividad 3

Tomando como referencia el código de búsqueda lineal analizado en clase, implementar la


siguiente función, y explicar el código una vez que funcione.

La función guarda en una variable auxiliar el valor del último elemento en el arreglo y lo
reemplaza con el valor buscado, posterior a esto, a partir de un ciclo while trata de localizar
si el elemento buscado se encuentra en dicho arreglo incrementando en 1 el valor de k.
Después de terminar el ciclo while se regresa el último valor del arreglo a su respecto índice
con el auxiliar, ya que de no hacerlo se modificaría el arreglo original.
Por último con ayuda de un if se comprueba si dicho valor está dentro del arreglo con k < n
o A[n] == x, sí este es el caso regresa el índice en donde se encuentra el valor buscado, de
no ser así quiere decir que el valor no se encuentra en el arreglo y se retorna -1
Código

Actividad 3.pý

Ejecución

Ejecución de Actividad 3.pý

13
Actividad 4

Implementar una función recursiva de la búsqueda lineal, y además explicarla y


programarla.
Código

Actividad 4.pý

Ejecución

Ejecución de Actividad 4.pý

La función BusquedaLinealRec() para empezar a buscar el elemento deseado primero


validará que el valor n ingresado (el tamaño del arreglo) no llegue a valores negativos esto
para indicar que el arreglo se recorrió por completo. Más adelante se incluye una condición
if muy sencilla, si el elemento actual del arreglo es el elemento buscado entonces se retorna
el valor n (el índice) en el que se encuentra el valor, ahora si todavía no se encuentra el
elemento deseado entonces se volverá a ejecutar busquedaBinaria pero ahora con un valor
de n-1 osea en el elemento inmediato anterior y se volverá a aplicar el mismo procedimiento

14
Actividad 5

Tomando como referencia el código que se analizó en clase, hacer funcionar el código de la
función que a continuación se presenta.

Primero se debe tener un arreglo ordenado, ya que a la función BusquedaBinIter le


pasaremos como parámetros los índices de inicio y fin del arreglo, luego calcularemos la
mitad y compararemos con nuestro valor a buscar en esa mitad, y si no se encuentra
revisaremos si es mayor o menor al dato que está en la mitad, esto para descartar
elementos innecesarios ya que está ordenado, e iremos acortando la búsqueda hasta que la
mitad sea igual a nuestro valor y retornaremos ese índice.
Código

Actividad 5.pý
Ejecución

Ejecución de Actividad 5.pý

15
Actividad 6

Tomando como referencia el código que se analizó en clase, hacer funcionar el


código de la función que a continuación se presenta.

Se agregó la función input que guarda el valor que se desea buscar en una variable llamada
x y se manda este valor, el arreglo, la posición inicial y final del arreglo a la función
BusquedaBinRecursiva, el primer if se utiliza para la recursividad del código, mientras el
índice izquierdo sea menor al índice derecho, la función se va a ejecutar, si el índice
izquierdo es mayor al índice derecho, se rompe la recursividad regresando el valor -1 lo cual
significa que el valor buscado no se encuentra en el arreglo. Después utilizando la función
if-elif, se va analizando en donde se encuentra el valor a buscar utilizando una variable
medio que es el índice central del arreglo, si el valor medio es el valor buscado se regresa el
índice del medio, si el medio es menor al valor buscado, se repite la función pero
descartando el fragmento del punto medio a la izquierda del arreglo, en cambio, si el medio
es mayor al valor buscado, se repite la función pero ahora descartando el tramo del punto
medio a la derecha del arreglo.

16
Código

Actividad 6.py

Ejecución

Ejecución de Actividad 6.py

17
Actividad 7

Escribir o redactar de forma adecuada los algoritmos de búsqueda lineal y búsqueda


binaria, para esto se debe tomar como referencia los códigos que se analizaron en clase.

Algoritmo de búsqueda lineal

1. En primer lugar se recorre el arreglo desde k=0 hasta n-1


2. Se verificará que el elemento en el que se encuentra sea el elemento que se quiere
encontrar.
3. En caso de que el elemento comparado no sea el valor que se quiere encontrar
entonces se repetirá el paso 2 hasta que el elemento a comparar y el elemento
buscado coincidan
4. Una vez encontrado el elemento se imprimirá en pantalla el índice donde ocurrió la
coincidencia.
5. En caso de que no haya una coincidencia en todo el arreglo se imprimirá en pantalla
un -1
Algoritmo de Búsqueda Binaria

1. Medio. Primero se calculará el valor de en medio del arreglo, o la mitad del arreglo
2. Si el valor de en medio calculado es el valor buscado entonces se imprimirá en
pantalla el índice del valor medio y terminará el programa.
3. En caso de que el valor medio no sea el valor buscado y sea menor que el valor
buscado se descartaran los valores detrás del medio y se continuará con el
elemento siguiente al medio, después se repetirá el mismo proceso desde el paso 1
4. En caso de que el valor medio no sea el valor buscado y sea mayor que el valor
buscado se descartaran todos los elementos delante del medio y se continuará con
el elemento anterior al medio, después se repetirá el proceso desde el paso 1.
5. En caso de no encontrar una coincidencia, se imprimirá un -1 en pantalla

18
Conclusiones
Bohorquez Oclica Nancy:
Se cumplieron los objetivos de la práctica ya que aprendimos a identificar las
características y comportamiento de los algoritmos de búsqueda lineal y binaria. A lo
largo de la práctica realizamos algunas actividades que nos ayudaron a comprender
mejor el funcionamiento de cada algoritmo de búsqueda, además, aprendimos que
los algoritmos de búsqueda se pueden programas de dos formas diferentes,
utilizando funciones de iteración o recursividad. También aprendimos que existen
varias mejoras que se pueden agregar al algoritmo de búsqueda lineal.
Aportación: Codificación y desarrollo de la actividad 6.

Díaz Gónzalez Rivas Ángel Iñaqui:


Durante el desarrollo de la práctica se analizó y se modificó los códigos
correspondientes a los algoritmos de búsqueda lineal y binaria, en donde se le
implementaron cambios que mejoraron los programas así como diferentes formas
de programar dichas búsquedas ya sea con diferentes funciones iterativas o con
recursividad.
Aportación: Codificación y desarrollo de la actividad 3.

Ciriaco Vargas José Arturo:


Realizando la práctica analizamos e implementamos funciones que cambiaban el
funcionamiento de los algoritmos base, vimos cómo mejorar cierta parte del código
con “mejoras” como la recursividad entre otras, y analizamos ahora como llevaban a
cabo la misma tarea de buscar dentro del arreglo el valor que queríamos encontrar,
al finalizarla conocimos diversas formas de implementar cada algoritmo con ciertas
variaciones en sus códigos.

Aportación: Codificación y desarrollo de la actividad 2.

García Vázquez Jesús Alejandro:


Con esta práctica se pusieron sobre los métodos de búsqueda, los cuales sirven
para poder encontrar valores dentro de arreglos. Esto después de haber hecho la
ordenación (Como en la binaria) o sin hacerla (Búsqueda Lineal). Siempre
podremos ocupar estas técnicas en algún futuro para obtener valores de una lista,
también aprendimos de distintas formas de implementar cada método de búsqueda.
Aportación: Codificación y desarrollo de la actividad 1.

Gutierrez Preza Diego:


Con el desarrollo de esta práctica se puso a prueba los conocimientos sobre las
búsquedas tanto binaria cómo lineal de forma que se comprendió que ambas
búsquedas pueden funcionar tanto recursiva como iterativamente y se adaptan los
programas para funcionar de la forma correspondiente, de esta forma el código se
examinó de manera que se comprenda su funcionamiento a detalle con el fin de
realizar modificaciones o mejoras y comprender su implementación.
Aportación: Codificación y desarrollo de la actividad 4 y 7.

19
Villeda Tlecuitl José Eduardo:
Los objetivos de la práctica fueron cumplidos exitosamente gracias a que durante
las clases de teoría revisamos minuciosamente los métodos de búsqueda (binaria y
lineal) por lo que al realizar la práctica era solo poner en práctica lo que aprendimos
durante las últimas sesiones que tuvimos.
Aportación:Codificación y desarrollo de la actividad 5

20
Código: MADO-20
Versión: 01
Manual de prácticas del Laboratorio
de Estructuras de datos y Página 21
algoritmos II Sección ISO 8.3
Fecha de emisión 20 de enero de 2017
Área/Departamento:
Facultad de Ingeniería
Laboratorio de computación salas A y B
La impresión de este documento es una copia no controlada

Referencias 

[1] CORMEN, Thomas
Algorithms Unlocked
Cambridge MA, USA
The MIT Press, 2013

21 

También podría gustarte