- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下复发:
T(n) = c for n = 1.
T(n) = T(floor[n/2]) + T(ceil[n/2]) + n - 1 for n > 1.
对我来说它看起来像归并排序,所以我猜循环的解决方案是 Θ(nlogn)。根据大师的方法我有:
a) Θ(1) for n = 1 (constant time).
b) If we drop the floor and ceil we have: (step1)
T(N) = 2T(N/2) + n - 1 => a = 2, b = 2.
logb(a) (base b) = lg(2) = 1 so n^lg(2) = n^1 = n
仔细观察我们知道我们有 master 方法的情况 2:
if f(n) = Θ(log(b)a) our solution to the recurrence is T(n) = Θ(log(b)a log(2)n)
解决方案确实是 T(n) = Θ(nlogn) 但我们偏离了常数因子 1。我的第一个问题是:在第 1 步,我们去掉了 ceil 和 floor。它是否正确 ?第二个问题是如何去掉常数因子 1?我放下它吗?或者我应该将它命名为 d 并证明 n - 1 确实是 n (如果是这样我如何证明它?)。最后用替换法证明是不是更好?
编辑:如果我们使用我们得到的替换方法:
We guess that the solution is O(n). We need to show that T(n) <= cn.
Substitutting in the recurrence we obtein
T(n) <= c(floor[n/2]) + c(ceil[n/2]) + n/2 - 1 = cn + n/2 - 1
所以它不是归并排序?我想念什么?
最佳答案
很久以前的事了,但现在已经过去了
我宁愿说
T(floor(n/2)) + T(floor[n/2)) <= T(floor(n/2)) + T(ceil[n/2))
T(floor(n/2)) + T(ceil[n/2)) <= T(ceil(n/2)) + T(ceil[n/2))
如果它们不相等,则相差 1(您可以忽略任何常量)
你忽略它。其背后的原因是:即使常数很大 10^100,与 n 变大时的大小相比,它也会很小。在现实生活中,你不能真正忽略非常大的常数,但这就是现实生活和理论的不同之处。在任何情况下,1 产生的差异最小。
你可以证明你喜欢,有些只是更简单。越简单通常越好,但除此之外,“更好”没有任何意义。所以我的回答是否定的。
关于algorithm - 求解递归 T(floor[n/2]) + T(ceil[n/2]) + n - 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29125582/
我尝试运行以下代码,该代码位于 Bash 脚本内。 NUMBER=600 LOSS_RATE=0,3 TOT_PKT=100 test=$(python -c "from math import ce
为了使其更通用......我通过这样做更改了 Javascript 中 Number 对象的原型(prototype) Number.prototype.ceil = function() { ret
我需要委托(delegate)“ceil”函数。我的类有方法'ceil',它需要返回cpp 的本地方法'ceil'。怎么调用它? double ceil() { return ceil(); } -这
我运行了一个程序来找出 n + 1 和 2**ceil(log2(n+1)) 之间的区别,其中 n 是 2 的幂。一直呈指数增长 所以根据 Big - O 的定义,不存在满足 - 的常量 c' 2^(
这个问题在这里已经有了答案: Why does the order of '-l' option in gcc matter? [duplicate] (3 个答案) 关闭 3 年前。 我正在尝试在
这个问题在这里已经有了答案: Is floating point math broken? (31 个答案) PHP - Floating Number Precision [duplicate]
所以我刚从一个我做得很好的学校项目中拿回了我的成绩,但是因为我没有调用 ceil(...),评分者扣了 5 分。这是一门使用 CUDA 的并行计算类(class),但问题与任何 CUDA 功能没有直接
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我目前有这样的功能,可以将任何输入数字四舍五入到最接近的模糊整数值: $(function(){ $('#my_value').blur(function() { $(this).va
#include using namespace std; int main() { long long n,m; double ans; cin>>n>>m; an
为什么输出0而不是1? System.out.println((int) (Math.ceil(1/2))); 虽然这个正确输出 1 System.out.println((int) (Math.ce
#include #include int main() { long X; std::cin >> X; long f = ceil(X); std::cout > X 行在 ceil 看到值之前截
我对 matlab 中的 ceil 函数有疑问。当我说“ceil(192.00)”时,它应该返回 192。但是,当我声明一个变量 x 并将其赋值为 14*(256/20)+(256/20) 时,正好是
谁能解释一下? echo ceil( 20.7 * 100 ); // returns 2070 echo ceil( 2070 ); // returns 2070 一切正常,合乎逻辑,
在 VC++ 2008 中,ceil(-0.5) 返回 -0.0。这是通常/预期的行为吗?避免将 -0.0 打印到 i/o 流的最佳做法是什么。 最佳答案 C++中的 ceil来自C标准库。 C 标准
今天早上我丢失了一堆文件,但因为它们是一个卷,在内部和外部都进行了碎片整理,所以 100% 恢复所需的所有信息都可用;我只需要在需要的地方填写 FAT。 我编写了一个程序来执行此操作,并在我转储到文件
当四舍五入到 2 个小数位时,值 4.01132141 将四舍五入为 4.02,因为它超过了 4.01。 你怎么能在 PL/SQL 中做到这一点? 最佳答案 一种方法是做 ceil(value*100
我创建了一个函数来返回两个日期之间的差异 dateDiff($v[17], date('Y/m/d')); if ($days dateDiff('10 oct 2011',date('Y/m/d')
通常我会询问工作方面的问题,所以这里有一些不同的内容。为了以尽可能最 Nerd 的方式实现我的新年决心,我正在 Excel 文件中创建一个健身计划。我会做斜坡组,这意味着每组我都会增加 10% 的重量
是否可以对时间格式变量(例如 09:31:23)使用命令 ceil?我想使用 ceil 来获得 09:32:00。我尝试使用类似于 round(time,'0:01:00'T) 的东西,但我想使用 c
我是一名优秀的程序员,十分优秀!