我正在为我的考试而学习,偶然发现了这个:
问题是:哪种算法最快,即最慢。
def f1():
a = []
for j in range(100000):
a.append(j*j)
for j in range(100000):
if 99999*j == a[j]:
print("yes")
def f2():
a = []
for j in range(100000):
a.append(j*j)
for j in range(100000):
if 99999*j in a:
print("yes")
def f3():
d = {}
for j in range(100000):
d[j] = j*j
for j in range(100000):
if 99999*j in d:
print("yes")
我理解 f2 是最慢,因为要检查项目是否在列表的所有成员中运行。
哪个会跑得更快?布尔表达式:(99999 * j == a [j])或(99999 * j在d中,其中d是字典并使用哈希)为什么?我认为哈希使得所有东西都是O(1)所以它们应该是平等的。
谢谢。
答案 0 :(得分:0)
现在没有编辑案例3你只检查键而不是值,这可能是错误的。如果你像
那样编辑它def f3():
d = {}
for j in range(100000):
d[j] = j*j
for j in range(100000):
if d[j] == 99999*j:
print("yes")
然后功能1也会更快