问题描述
我正在使用JavaScript,但是我认为这与许多计算机语言有关。
在以下情况下,为什么在obj
(Object
)中进行查找是O(1)
?是不是应该O(n)
?有人可以向我解释一下,例如提供一个实际的,低级的解释为什么不是O(n)
吗?
let arr = ['m','k','b','z']
let obj = { 'a': true,'b': true,'c': true}
for (let i = 0; i < arr.length; i++) {
if ( obj[arr[i]] ) {
return true
}
}
上述时间复杂度被认为是O(n)
,但希望您能明白为什么这个问题对我来说越来越大,因为为了查找(例如)obj['b'] === arr[2]
(这正是我与条件if ( obj[arr[i]] )
进行比较,我自然会认为它应该遍历obj
的所有属性并进行比较,但不是那种同类的循环,因此总的来说应该是O(n^2)
?再一次,如果没有,请解释为什么,为什么不循环,但能够立即将其拾取(O(1)
)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)