不带bis的Python列表二进制搜索

2024-06-23 18:43:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的代码如下,但我不知道该怎么做,代码上的粗体文本在哪里:

(这怎么办?是其他功能吗?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)

Tags: key代码forsearchreturndeflistint
1条回答
网友
1楼 · 发布于 2024-06-23 18:43:17

它似乎没有为您做任何事情;取消对midpoint和point的调用,只需

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

(但是,您的代码有一些错误,仅此更改将无法工作

  1. 创建一个名为List的列表,然后尝试附加到名为myList的未初始化变量
  2. 你'导入20个随机数,但是range()不是随机的,它是一个简单的序列1,2,3,4。。。在
  3. range已经返回了一个列表,不需要对其进行计数和复制,只需使用它
  4. 使用空的List、键和三个未初始化的变量调用二进制搜索
  5. binary_search假设列表是经过排序的,但如果关于“随机数”的注释是正确的,那么就不会是这样了。 )在

相关问题 更多 >

    热门问题