|
|
1
5
一般来说,不能像这样增加复杂性:对于堆排序,N表示堆中的项数,而对于大整数,N可能表示可能值的上限。一般来说,这些不一定是相关的,因此它是N log N log M(其中M是项目可能采用的范围)。 在特定的应用程序中,大整数很可能遵循特定的分布。例如,可以知道它们都低于10^20。如果是这样,比较操作将花费恒定的时间(由10^20的上限确定)。然后,logm也是常数,整个复杂度是O(N logn)。 |
|
|
2
3
这里有一个矛盾的证明:
现在考虑
|
|
|
3
2
你将无法减少
你怎么了
|
|
|
4
1
好的,程序的一般复杂性度量如下:
在这个定义中,考虑了所有因素,因为整数可能任意大,对它们进行算术运算也会增加O(n)下的函数。 但如果我们直接编程图灵机,你的问题就不会出现了。在现实世界中,我们更喜欢抽象。虽然我们仍然计算运行程序所需的“步骤”,但我们假设某些操作需要 一步 . 我们假设,由于不同的原因:
在本例中(您的第一次编辑),如果您想要具体化您的复杂性度量,您应该将O下的函数相乘。如果您认为采取的一个步骤现在被视为采取O(logn)步骤,那么具体化步骤的数量将增加O(logn)倍。因此,总复杂度为O(N) 日志N
日志N)。但是你知道输入包括
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 9 月前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 9 月前 |
|
|
Pengcheng · 这个简单的递归函数的输出是什么?你能详细解释一下吗? 10 月前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |