• python 二分查找


    二分查找要求对象必须有序,其基本原理如下:

    • .从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;
    • 2.如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
    • 3.如果在某一步骤数组为空,则代表找不到。

    二分查找也成为折半查找,算法每一次比较都使搜索范围缩小一半, 其时间复杂度为 O(logn)。

    未使用递归:

     1 a = [1,5,-9,2,8]
     2 
     3 low = 0
     4 high = len(a)-1
     5 def mid_sort(array,value):      #value  要找的值
     6 
     7     while(low < high):
     8         mid = (low+high)/2
     9         
    10         if array[mid] < value :
    11             low = mid+1
    12         elif array[mid] > value:
    13             high = mid-1
    14         else:
    15             return mid
    16 
    17     return None

    使用递归:

     1 def binary_search(array,value,low,high):
     2     if low>high:
     3         return None
     4     mid = (low + high)/2
     5     if array[mid] > value:
     6         return binary_search(array,value,low,mid-1)
     7     elif array[mid] < value:
     8         return binary_search(array,value,mid+1,high)
     9     else:
    10         return mid

    性能;

    非递归比递归 效率高

  • 相关阅读:
    HDU 树型dp
    NOIP模拟 Math
    HTML5本地存储LocalStorage和sessionStorage
    数据结构与算法第一章答案
    堆和队列的应用之——简单计算器
    HITCS-LAB1 Linux 下C工具的应用
    cs:app 第二章homework(已完结)
    vim使用小结(1)
    学术英语写作(1)
    linux基础(2)
  • 原文地址:https://www.cnblogs.com/shunyu/p/8467270.html
Copyright © 2020-2023  润新知