Nic*_*key 8 javascript computer-science equality
我知道要比较两个字符串是否相等,解释器必须遍历两个字符串并比较每个字符。
这将使时间复杂度0(n),其中n最短字符串的长度。
但是,比较两个数字是否相等是0(1)。
这是为什么?解释器是否不必遍历每个数字以检查是否相等?
Joa*_*uer 10
计算机中的数字通常以固定大小的单位处理。int在任何给定的语言和/或编译器/平台组合中,a 可能是32位或64位,但是永远不会是可变长度的。
因此,比较数字时,您要比较的位数是固定的。建立一个硬件电路一次比较多个位非常容易(即“一个动作”)。
另一方面,字符串具有固有的可变长度,因此您只说“字符串”并不能告诉您必须比较多少位。
但是也有例外,因为存在可变长度的数字,通常称为BigInteger或BigDecimal,它的行为与String比较非常相似,因为它可能最终是O(n)来比较两个BigDecimal值是否相等(其中n是BigDecimals 的长度),而不是它们的任何一个数值)。