Python - 列出没有bisect的二进制搜索

时间:2014-12-01 11:56:40

标签: python list binary-search

我有一个列表,我想二进制搜索键(数字)

我的代码如下,但我不知道如何处理代码上的粗体文字:

(该怎么办?是其他功能吗?int imid = midpoint(imin, imax)

List = []
x = 1

#Import 20 numbers to list
for i in range (0,20):
    List.append (i)
print (List)

key =  input("\nGive me a number for key: ")

def midpoint(imin, imax):
    return point((imin+imax)/2)

def binary_search(List,key,imin,imax,point):
    while (imax >= imin):
        int imid = midpoint(imin, imax)

        if(List[imid] == key):
            return imid;  

        elif (List[imid] < key):
            imin = imid + 1;

        else:
            imax = imid - 1;

    return KEY_NOT_FOUND;


print (binary_search(key))

midpoint(imin, imax)
binary_search(List,key,imin,imax,point)

1 个答案:

答案 0 :(得分:0)

它似乎没有为你做任何事情;删除对中点的调用,然后指向

def binary_search(List,key,imin,imax,point):
    while (imax >= imin):
        imid = (imin + imax) / 2

(但是,您的代码存在一些问题,并且只会对该更改起作用;

  1. 您创建一个名为List的列表,然后尝试附加到名为myList
  2. 的未初始化变量
  3. 你'导入20个随机'数字,但是range()不是随机的,它是一个简单的序列1,2,3,4 ......
  4. 范围已经返回一个列表,无需计算并复制它,只需使用它
  5. 您使用空List,一个键和三个未初始化的变量调用binary_search
  6. binary_search假设列表已经排序,但是如果关于“随机数”的评论是正确的,则不会。 )