zoukankan      html  css  js  c++  java
  • 二分查找

    二分查找,就是对于已排好序的序列,查找某个值,每次都对比中间值,比中间值小,就去序列前面找,否则就去后面找,知道找到为止,否则返回-1。

    这里分递归和非递归两种方式组成,其中非递归方式调用的适合更符合日常习惯。

    ll=[1,3,5,7,9,11,13,15]
    #递归方式
    def Binary_search(L,value,left,right):
        if right>=left:
            mid=(left+right)//2
            if value==L[mid]:
                return mid
            elif value>mid:
                return Binary_search(L,value,mid+1,right)
            else:
                return Binary_search(L,value,left,mid-1)
        else:
            return -1
    #非递归方式
    def Binary_search2(L,value):
        left=0
        right=len(L)-1
        while right>=left:
            mid=(left+right)//2
            if value==L[mid]:
                return mid
            elif value>L[mid]:
                left=mid+1
            else:
                right=mid-1
        return -1
        
    #result=Binary_search(ll,11,0,len(ll)-1)
    result=Binary_search2(ll,15)
    if result!=-1:
        print('The index of the value is {}'.format(result))
    else:
        print('I can not find the value in ll')
    ll=[1,3,5,7,9,11,13,15]
    #
    def Binary_search(L,value,left,right):
        if right>=left:
            mid=(left+right)//2
            if value==L[mid]:
                return mid
            elif value>mid:
                return Binary_search(L,value,mid+1,right)
            else:
                return Binary_search(L,value,left,mid-1)
        else:
            return -1
    #
    def Binary_search2(L,value):
        left=0
        right=len(L)-1
        while right>=left:
            mid=(left+right)//2
            if value==L[mid]:
                return mid
            elif value>L[mid]:
                left=mid+1
            else:
                right=mid-1
        return -1
        
    #result=Binary_search(ll,11,0,len(ll)-1)
    result=Binary_search2(ll,15)
    if result!=-1:
        print('The index of the value is {}'.format(result))
    else:
        print('I can not find the value in ll')
  • 相关阅读:
    【源码学习之spark core 1.6.1 standalone模式下的作业提交】
    【源码学习之spark streaming 1.6.1 】
    spark udf 初识初用
    spark 累加历史 + 统计全部 + 行转列
    spark 都用了哪些开源东东
    kafka 官方示例代码--消费者
    104. 二叉树的最大深度
    237. 删除链表中的节点
    Leetcode-167. Two Sum II
    Leetcode-215. Kth Largest Element in an Array
  • 原文地址:https://www.cnblogs.com/xiaoxiong-kankan/p/12911655.html
Copyright © 2011-2022 走看看