码迷,mamicode.com
首页 > 其他好文 > 详细

查找 —— 二分查找[递归+非递归]

时间:2016-12-03 01:34:11      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:turn   范围   while   pre   bin   size   调用   比较   递归   

二分查找

 

二分查找是对一组有序序列进行查找。根据要查找的k和序列中间元素比较,动态的移动查找范围。以对折的方式缩小查找范围。

 

递归方式:

def binarySearch(A,left,right,k):
    if left<= right:
        mid =(left+right)//2
        if  A[mid] == k:
            return mid
        if A[mid]>k:
            return binarySearch(A,left,mid-1,k) #此处要返回函数运行结果而不是仅仅调用函数
        else:
            return binarySearch(A,mid+1,right,k)
    else:
        return -1

A= [1,2,3,4,5,6,7]
left = 0
right = len(A)-1
print(binarySearch(A,left,right,3))

非递归方式:

def binarySearch(A,k):
    left = 0
    right =len(A)-1
    while left<=right:
        mid = (right+left)//2
        if A[mid] == k:
            return mid
        if A[mid]>k:
            right = mid-1
        else:
            left = mid+1
    return -1

a = [1,2,3,4,5]
print(binarySearch(a,1))

 

查找 —— 二分查找[递归+非递归]

标签:turn   范围   while   pre   bin   size   调用   比较   递归   

原文地址:http://www.cnblogs.com/jijizhazha/p/6127607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!