为什么查找总是恒定时间而不是On

问题描述

我正在使用JavaScript,但是我认为这与许多计算机语言有关。

在以下情况下,为什么在objObject)中进行查找是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 (将#修改为@)