如何解决为什么查找总是恒定时间而不是On
我正在使用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 举报,一经查实,本站将立刻删除。