<jupyter_start><jupyter_text>Busqueda Linealdado un conjunto de datos no ordenados, la busqueda lineal consisten en recorrer el conjunto de datos desde el inicio al final, moviendose de unoen uno, hasat encontrar el elemento o llegar a final del conjunto.datos = [ 4,18,47,2,34,14,78,12,48,21,31,19,1,3,5] Busqueda Binaria funciona sobre un conjunto de datos lineal ordenado consiste en dividirel conjunto en mitades y buscar en esa mitad, si el elemento buscado noesta en la mitad, preguntas si el elemento esta a ala derecha o a la izquierda, haces la lista igual a ala mitad correspondiente y repites el proceso.L = [1, 2, 3, 4, 5, 12, 14, 18, 19, 21, 31, 34, 47, 48, 78]DER = longitud(L)-1IZQ = 0MID apuntara a la mitad del segmento de busquedabuscado: valor a buscar1. DER = longitud(L)-12. Haceer IZQ = 03. si IZ > que DER significa que hay un error en los datos 4. Calcular MID = int((IZQ + DER) / 2 ) 5. mientras L[MID] != buscado: hacer 6.      - preguntar L[MID] > buscado               - hacer DER  = mid        - else:              - hacer IZQ = MID        - preguntar(DER -IZQ) % 2 ==0:              - MID = (IQZ (DER -IZQ ) / 2) +1        - ELSE:              -<jupyter_code>'''
Busqueda lineal regresa la posicion del elemento
buscado,  si se encuentra dentro de la lista.
Regresa -1 si el elemento no existe denttro de la
lista. 
'''
def  busq_lineal(lista,valor):
  indice = -1
  contador = 0
  for idx in range(len(lista)):
    contador += 1
    if lista[idx] == valor:
      indice = idx
      break
  print(f"Numero de comparaciones realizadas: {contador}")
  return indice

"""
Busqueda Binaria
"""

def busqueda_binaria(lista, valor):
  IZQ = 0
  DER = len(lista) - 1
  MID = int((IZQ + DER) / 2)
  if len(lista) % 2 == 0:
    MID = (DER // 2) + 1
  else:
    MID = DER // 2
  while (lista[MID] != valor):
    if lista[MID] > valor: 
      DER = MID
    else:
      IZQ = MID
    if (DER - IZQ)%2 ==0:
      MID = (IZQ + (DER-IZQ)//2)+1
    else:
      MID = IZQ + ((DER-IZQ)//2)
  return MID

def main():
  datos = [ 4,18,47,2,34,14,78,12,48,21,31,19,1,3,5]
  dato = int(input("Valor a buscar: "))
  resultado = busq_lineal(datos,dato)
  print(f"Resultado: {resultado}")
  print("Busquea lineal en una lista ordenada")
  datos.sort()
  print(datos)
  resultado = busq_lineal(datos,dato)
  print(f"Resultado: {resultado}")
  
  print("\n")
  print("Busqueda bianaria")
  posicion = busqueda_binaria(datos,dato)
  print(f" El elemento a buscar {dato}, esta en la posicion: {posicion}")

main()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12264150943396226, 'fraction_numerical': 0.042059748427672954, 'mean_word_length': 3.0654952076677318, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '293372', 'license': 'MIT', 'n_tokens_mistral': 1062, 'n_tokens_neox': 1004, 'n_words': 312, 'path': '07Octubre.ipynb', 'repo_name': 'Erik-Silver/daa_2021_1', 'size': '2544'}