<jupyter_start><jupyter_text>Busqueda lineal.Dado un cojunto de datos o ordenados, la busqueda lineal consiste en recorrer el conjunto de datos desde el inicio al final, moviendose de uno en uno hasta encontrar el elemento o llegar al final del conjunto. datos=[4,18,47,2,34,14,78,12,48,21,31,19,13.5] Busqueda binaria funciona sobre un conjunto de datos lineal ordenado.Consiste en dividir el conjunto en mitades y buscar en esa mitad si el elemento buscado no esta en la mitad , preguntas si el elemento esta a la derecha o a la izquierda .Haces la lista igual a la mitad correspondiente y repites el procesoL = [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 segamento de busquedabuscado es el valor a busacr en la lista1. Hacer DER = longitud (L) -12. IZQ = 03. Si IZQ > DER significa que hay un error d los datos4. calcular MID = int((IZQ + DER))/2 5. mientras L[MID] != buscado hacer 6.        - preguntar L[MID] > buscado            - hacer DER  = MID          - de lo contrario            - hacer IZQ = MID          - preguntar (DER-IZQ)%2              - MID = (IZQ + ((DER-IZQ) /2))+1              - de lo contrario                MID = IZQ + ((DER - IZQ)/2)7. return MID<jupyter_code>"""
Busqueda lineal.
regresa la posicion del elemento 'buscado' si se encuentra en la lista
regresa -1 si el elemento no existe dentro de la lista
"""
def busq_lineal(L,buscado):
  indice=-1
  contador = 0
  for idx in range(len(L)):
    contador += 1
    if L[idx]==buscado:
      indice=idx
      break
  print(f"numero de comparaciones realizadas{contador}")
  return indice
"""
Busqueda binaria
"""

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


def main():
  datos=[4,18,47,2,34,14,78,12,48,21,31,19,1,3,5]
  dato=int(input("¿Que valor quieres buscar?"))
  resultado= busq_lineal(datos,dato)
  print("Resultado: ", resultado)


  print("Busqueda lineal en una lista ordenada")
  datos.sort()
  print(datos)
  resultado = busq_lineal(datos,dato)
  print("Resultado:" , resultado)

  print("busqueda bInaria")
  pisicion = busqueda_binaria(datos,dato)
  print(f"El elemento {dato} esta en la posicion de la lista")

main()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11929824561403508, 'fraction_numerical': 0.04249512670565302, 'mean_word_length': 2.984472049689441, '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': '518843', 'license': 'MIT', 'n_tokens_mistral': 1064, 'n_tokens_neox': 1001, 'n_words': 314, 'path': '07Octubre.ipynb', 'repo_name': 'NetzaiHernandez/daa_2021_1', 'size': '2565'}