<jupyter_start><jupyter_text><jupyter_code><jupyter_output><empty_output><jupyter_text>Busuqeda lineal dada un conjunto de datos ordenados la buswueda linenal conciste en recorrerr el conjuntos de datos desde el inicio sl final, miviendose en uno en uno ghasta encontrata el eleemento o llegar al final del conjunto.datos = [ 4,18,47,2,34,14,78,12,48,21,31,19,1,3,5] Busqueda binaria.funciona sobre un conjubto de datos lineal ordenado.consiste en dividir el conjunto en mitades y buscar en esa mitad, preguntas ai el elemento esta a la derecha o a la izquierda.Haces la lista igual a la 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 busqueda busacdo es el valor a buscar (47)1. Hacer DER = longitud (L)-12. Hacer IZQ=03. Si IZQ > DER significa que hay un error en los datos4. Calcular MID = int( (IZQ + DER)/2 )5. mientras L[MID] != buscado hacer6.    - 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 dentro de la lista.
regresa -1 si el elemento buscado no existe 
'''
def busq_lienal(L, buscado):
  indice=-1
  cont=0
  for idx in range(len(L)):
    cont+=1
    if L[idx] == buscado:
      indice = idx
      break
  print(f"numero de comparaciones realizadas ={cont}")
  return indice

'''
Buesqueda binaria
'''
def busq_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)
  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_lienal(datos, dato)
  print("resultado",resultado)
  print("busqueda lienal en una lista ordenada")
  datos.sort()
  print(datos)
  resultado = busq_lienal(datos, dato)
  print("resultado",resultado)

  print("busqueda binaria")
  posicion = busq_binaria(datos, dato)
  print(f"El elemento {dato} esta en la posicion {posicion} de la lista")
main()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1259050683829445, 'fraction_numerical': 0.04424778761061947, 'mean_word_length': 3.481081081081081, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 12, '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': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '184023', 'license': 'MIT', 'n_tokens_mistral': 1050, 'n_tokens_neox': 1002, 'n_words': 297, 'path': '7_Octubre.ipynb', 'repo_name': 'jesuspablo888/daa_2021_1', 'size': '2486'}