首页 > 试题广场 >

手写二分查找

def find_data(lst, data): length = len(lst) start = 0 end = length - 1 while start+1 < end: mid = start + end // 2 if lst[mid] > data: end = mid elif lst[mid] < data: start = mid else: return True return False
发表于 2019-01-23 20:43:19 回复(0)
def dichotomy(seq, d):
    start, end = 0, len(seq) - 1

    while start <= end:
        mid = (start + end) // 2
        if seq[mid] > d:  # 缩小范围到以mid分隔的左半区, 左半区的终点为mid - 1
            end = mid - 1
        elif seq[mid] < d:  # 缩小范围到以mid分隔右半区,右半区的起点为 mid + 1
            start = mid + 1
        else:
            return True
    return False
发表于 2019-05-22 18:16:56 回复(0)
private int binarySearch(int []nums, int left, int right, int value) {
    if(left > right) {
        return -1;
    }
    int mid = (left+right)/2;
    int midValue = nums[mid];
    
    if(value > midValue) {
        return binarySearch(nums, mid+1, right, value);
    } else (value < minValue) {
        return binarySearch(nums, left, mind-1, value);
    } else {
        return mid;
    }
}

发表于 2020-10-14 22:12:28 回复(0)
#假设输入的需要查找的数列为有序排列,即为x,需要查找的值为tem。 def seek(x,tem): if len(x)>0: mindle=int(len(x)/2) if tem<x>x[mindle]: return seek(x[mindle:]) else: return print("已查到,位于x的%d",%(mindle)) else: return print("查无此值") </x>
发表于 2020-08-22 10:40:42 回复(0)
def test(num_list,key):
    if len(test) <= 0:
        return None
    L = 0
    R = len(num_list) -1
    while L <= R:
        mid = L + ((R-L)>>1)
        if num_list[mid] > key:
            R = mid - 1
        elif  num_list[mid] < key:
            L = mid + 1
        else:
            return mid

发表于 2019-08-09 09:44:03 回复(0)
def binary_sort(l,data): n = len(l) mid = n//2 if l[mid] ==data: return True if l[mid] > data: retutn binary_sort(l[:mid-1],data) else: return binary_sort(l[mid+1:],data)
发表于 2019-03-29 00:21:47 回复(0)
Def erfen(l,target): left,right=0,len(l)-1 while left<right: mid=int((left+right)/2) if target=l[mid]: Return mid elif target>l[mid]: Left=mid else:right=mid Return none
发表于 2019-02-23 11:49:17 回复(0)