zoukankan      html  css  js  c++  java
  • python实现二分查找算法

      二分查找算法也成为折半算法,对数搜索算法,一会中在有序数组中查找特定一个元素的搜索算法。搜索过程是从数组中间元素开始的

    如果中间元素正好是要查找的元素,则搜索过程结束;如果查找的数大于中间数,则在数组的前一半查找,否则,在后一半查找。直到找到相应

    数据止。

      该算法的的复杂度为 O(log n),相比其他算法优势还是比较明显的。

      二分查找法的O(log n)让它成为十分高效的算法。不过它的缺陷却也是那么明显的。就在它的限定之上:

    有序,我们很难保证我们的数组都是有序的。当然可以在构建数组的时候进行排序,可是又落到了第二个瓶颈上:它必须是数组

    数组读取效率是O(1),可是它的插入和删除某个元素的效率却是O(n)。因而导致构建有序数组变成低效的事情。

      python的代码实现和测试:

    def binary_search(a_list,item):
            first = 0
            last = len(a_list) - 1
            found = False
    
            while first <= last and not found:
                    midpoint = (first + last) // 2
                    if a_list[midpoint] == item:
                            found = True
                    else:
                            if item < a_list[midpoint]:
                                    last = midpoint - 1
                            else:
                                    first = midpoint + 1
    
            return found
    
    test_list = [0,1,2,8,13,17,19,32,42,]
    print(binary_search(test_list,3))
    print(binary_search(test_list,13))
    def dbinary_search(a_list, item):
            if len(a_list) == 0:
                    return False
            else:
                    midpoint = len(a_list) // 2
    
            if a_list[midpoint] == item:
                    return True
            else:
                    if item < a_list[midpoint]:
                            return binary_search(a_list[:midpoint], item)
                    else:
                            binary_search(a_list[midpoint + 1:], item)
    
    
    print(dbinary_search(test_list,3))
    print(dbinary_search(test_list,13))
  • 相关阅读:
    mac控制台快捷键
    idc函数大全
    idc指令相关
    idc交叉引用
    ida脚本函数
    2025年全球网络安全市场规模将达到30万亿美元
    是黑客驱动着汽车网络安全市场的趋势?听听大佬们怎么说
    不修复!你的设备会被黑客远程控制,专家警告修补这个漏洞
    共抗疫情!科技人员积极抗击”冠状病毒“大流行
    警惕黑客威胁汽车,车联网如何保证安全?
  • 原文地址:https://www.cnblogs.com/dylancao/p/8144316.html
Copyright © 2011-2022 走看看