{"id":642,"date":"2025-08-28T01:14:18","date_gmt":"2025-08-28T01:14:18","guid":{"rendered":"https:\/\/hmoweb.net\/Python\/?p=642"},"modified":"2025-08-30T17:37:46","modified_gmt":"2025-08-30T17:37:46","slug":"proyecto-6-busqueda-binaria","status":"publish","type":"post","link":"https:\/\/hmoweb.net\/Python\/2025\/08\/28\/proyecto-6-busqueda-binaria\/","title":{"rendered":"Proyecto 6 Busqueda Binaria"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Es recomendable que este ejercicio lo escribas (trata de no copiarlo) y lo revises para ver que se obtiene el resultado esperado. Si tiene alguna duda utiliza el debugger para ejecutar el programa paso por paso. Si estas siguiendo el video, este ejercicio lo encontraras en el minuto [1:50:55]<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n&quot;&quot;&quot;\nProyecto 6 Busqueda Binaria\n27\/08\/2025\nEdito AHR\n&quot;&quot;&quot;\nimport random\nimport time\n\n\ndef busqueda_ingenua(lista, objetivo):\n    for i in range(len(lista)):  # range(len(lista)) -&gt; 0, 1, 2, 3, ...., len(lista)-1\n        if lista&#x5B;i] == objetivo:\n            return i\n    return -1\n\n\nlista = &#x5B;1, 3, 5, 10, 12]\nprint(busqueda_ingenua(lista, 10))  # Este elemento est\u00e1 en la lista\nprint(busqueda_ingenua(lista, 15))  # Este elemento no est\u00e1 en la lista\n\n\n#  Esta funcion requiere que los elementos de la lista esten ordenados en forma ascendente.\n#  Si esta ordenados en forma descentente se harian ajustes en la logica de busqueda.\ndef busqueda_binaria(lista, objetivo, limite_inferior=None, limite_superior=None):\n    if limite_inferior is None:  # Si no se proporciona un limite_inferior, se establece en 0\n        limite_inferior = 0  # Inicio de la lista\n    if limite_superior is None:  # Si no se proporciona un limite_superior, se establece en len(lista) - 1\n        limite_superior = len(lista) - 1  # Final de la lista\n    \n    if limite_superior &lt; limite_inferior:  # Caso base: el objetivo no est\u00e1 en la lista\n        return -1\n    \n    # &#x5B;1, 3, 5, 10, 12]\n    #  0  1  2   3   4\n    # punto_medio = (0 + 4) \/\/ 2 = 4 \/\/ 2 = 2    \n    punto_medio = (limite_inferior + limite_superior) \/\/ 2  # Encuentra el punto medio de la lista\n    \n    if lista&#x5B;punto_medio] == objetivo:  # Caso base: el objetivo est\u00e1 en el punto medio\n        return punto_medio\n    elif objetivo &lt; lista&#x5B;punto_medio]:\n        return busqueda_binaria(lista, objetivo, limite_inferior, punto_medio - 1)  # Busca en la mitad izquierda\n    else:\n        return busqueda_binaria(lista, objetivo, punto_medio + 1, limite_superior)  # Busca en la mitad derecha\n\n\nif __name__ == &quot;__main__&quot;:\n    mi_lista = &#x5B;1, 3, 5, 10, 12]\n    print(busqueda_binaria(mi_lista, 5))  # Debe retornar 2\n    print(busqueda_binaria(mi_lista, 11))  # Debe retornar -1\n    \n    # Crear una lista ordenada con 10000 n\u00fameros aleatorios\n    tama\u00f1o = 10000\n    conjunto_inicial = set()  # Un conjunto no permite elementos repetidos\n    \n    while len(conjunto_inicial) &lt; tama\u00f1o:\n        conjunto_inicial.add(random.randint(-3*tama\u00f1o, 3*tama\u00f1o))\n\n    lista_ordenada = sorted(list(conjunto_inicial))  # sorted() retorna una nueva lista ordenada\n    \n    # Medir el tiempo de busqueda ingenua\n    inicio = time.time()\n    for objetivo in lista_ordenada:\n        busqueda_ingenua(lista_ordenada, objetivo)\n    fin = time.time()\n    print(f&quot;Tiempo de busqueda ingenua: {fin - inicio} segundos&quot;)\n\n    # Medir el tiempo de busqueda binaria\n    inicio = time.time()\n    for objetivo in lista_ordenada:\n        busqueda_binaria(lista_ordenada, objetivo)\n    fin = time.time()\n    print(f&quot;Tiempo de busqueda binaria: {fin - inicio} segundos&quot;)\n    \n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Veamos los resultados en la consola:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PS C:\\Users\\Codigo\\Modulo 2> python Busqueda_Binaria.py\n3\n-1\n2\n-1\nTiempo de busqueda ingenua: 2.111323356628418 segundos\nTiempo de busqueda binaria: 0.020260095596313477 segundos\nPS C:\\Users\\augus\\OneDrive\\Documentos\\Pythom\\Pagina Web Python.hmoweb.net\\Codigo\\Modulo 2> <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Es recomendable que este ejercicio lo escribas (trata de no copiarlo) y lo revises para ver que se obtiene el resultado esperado. Si tiene alguna duda utiliza el debugger para ejecutar el programa paso por paso. Si estas siguiendo el video, este ejercicio lo encontraras en el minuto [1:50:55] Veamos los resultados en la consola:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"pagelayer_contact_templates":[],"_pagelayer_content":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-642","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts\/642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/comments?post=642"}],"version-history":[{"count":3,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts\/642\/revisions"}],"predecessor-version":[{"id":648,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts\/642\/revisions\/648"}],"wp:attachment":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/media?parent=642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/categories?post=642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/tags?post=642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}