Java中类型转换为int的时间复杂度加倍


double val = 500.00;
int val2 = (int) val;

上一个例子中类型转换的时间复杂性是多少?

O(1)吗?

是的,它是常数时间,O(1(。

它不可能真的是其他任何东西,因为存在有限(尽管很大(数量的可能值。因此,即使更大的值需要更长的时间(我对此表示怀疑,这可能取决于CPU和其他情况(,它所需的时间也有上限。根据big-O的定义,这足以称之为O(1(。

John Bollinger评论:

将输入值的大小解释为问题的大小,我想这个答案是这样的。Java的所有部分double对其值意义重大,因此表示较小的数量级不存在较小的转换问题。

我100%同意。它确实表明,为该操作指定时间复杂性的想法是牵强的。输入的一个更自然的度量是其中的位数。恒定的64位。这也给出了O(1(。

最新更新