我的任务是设计一个python函数,返回给定列表中给定项的索引。它被称为二进制排序(l,item),其中l是一个列表(未排序或已排序),item是您要查找的索引项。你知道吗
这是我到目前为止得到的,但它只能处理排序列表
def binary_search(l, item, issorted=False):
templist = list(l)
templist.sort()
if l == templist:
issorted = True
i = 0
j = len(l)-1
if item in l:
while i != j + 1:
m = (i + j)//2
if l[m] < item:
i = m + 1
else:
j = m - 1
if 0 <= i < len(l) and l[i] == item:
return(i)
else:
return(None)
如果给定一个未排序的列表和一个作为参数的值,如何修改它,使其返回未排序列表中值的索引?你知道吗
二进制搜索(你可能把它命名错了——上面的算法不叫“二进制排序”)——需要有序的序列才能工作。你知道吗
它根本无法处理无序的序列,因为排序允许它在每个搜索步骤中丢弃至少一半的项目。你知道吗
另一方面,既然允许您使用
list.sorted
方法,那么这似乎是一种可行的方法:调用l.sort()
将在开始搜索操作之前对目标列表进行排序,并且算法将起作用。你知道吗在旁注中,避免在程序中只调用任何东西
l
——对于有数学背景的人来说,这可能是一个很好的名字,用于在纸上做事情——但是在屏幕上,l
很难从1
伪装出来,并且会导致糟糕的源代码阅读。这个例子的好名字可以是sequence
lst
,或者data
。(list
也应该避免,因为它将重写具有相同名称的Python内置函数)。你知道吗相关问题 更多 >
编程相关推荐