gpt4 book ai didi

javascript - 为什么比较字符串 0(n),但比较数字 0(1)?

转载 作者:行者123 更新时间:2023-12-04 05:45:05 25 4
gpt4 key购买 nike

我知道要比较两个字符串是否相等,解释器必须遍历两个字符串并比较每个字符。

这将使时间复杂度 0(n)在哪里 n是最短字符串的长度。

但是,比较两个数字是否相等是 0(1) .

这是为什么?解释器不是必须遍历每个数字来检查是否相等吗?

最佳答案

计算机中的数字通常以固定大小的单位处理。一个 int在任何给定的语言和/或编译器/平台组合中可能是 32 位或 64 位,但它永远不会是可变长度的。

因此,在比较数字时,您需要比较固定数量的位数。构建一次比较那么多位的硬件电路非常容易(即作为“一个 Action ”)。

另一方面,字符串具有固有的可变长度,因此您只说“字符串”并不能告诉您必须比较多少位。

但是有异常(exception),因为有可变长度的数字,通常称为 BigIntegerBigDecimal其行为与 String 非常相似比较,因为它可能最终是 O(n) 来比较两个 BigDecimal相等的值(其中 n 是 BigDecimal 的长度,而不是它们的任何一个数值)。

关于javascript - 为什么比较字符串 0(n),但比较数字 0(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58593501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com