使用分而治之的方法,我试图做一个算法来比较向量的索引是否等于此位置的元素。我已经看到我的代码在大向量中效率低下,因此我一直在考虑将向量分成两半来实现,但是我不知道该怎么做...
def indicePosicion (inicio, lista):
if lista == []:
return -1
elif int(lista[0]) == inicio:
return inicio
else:
return indicePosicion(inicio+1, lista[1:])
numero = int(input())
lista = input().split()
print(indicePosicion(0, lista))
我介绍向量中元素的数量: 7 介绍用空格分隔的元素: -3 -1 2 5 6 7 9 输出应该是 2 元素等于位置的地方
答案 0 :(得分:0)
“我发现我的代码在大向量上效率低下”
如果未对输入数组进行排序,则最高效的代码将具有O(n)的时间复杂度,因为我们必须逐个元素进行迭代并将索引与值进行比较。在这种情况下,使用分而治之是没有意义的,只会增加复杂性。
如果输入数组已排序,则可以使用二进制搜索的修改版本来实现O(logn)时间复杂度。
答案 1 :(得分:0)
仅获取let j = this.i; j < this.categories.length; j++)
等于index
的索引列表如何?
element