复杂嵌套循环,利用外环可变逐渐缩小了一半每次迭代
void G(....)
{
for (int k = n/2; k > 0; k /= 2)
{
for (int m = 0; m < n; m++)
a[(k+m)%n]=k+m;
}
}
我不确定如何计算循环动作时的循环发起者和增量就像(n/2)
和(k/=2)
respectively..and等。在编译器上运行此代码以获得不同的n值,例如,如果n是2^x,那么对于n的值直到2 ^(x + 1)-1,迭代是n * x。现在我被卡住了,不知道将这个分类为哪个大哦功能。任何答案/反馈/建议的学习方法/解释欢迎!复杂嵌套循环,利用外环可变逐渐缩小了一半每次迭代
Joker
回答
外环运行 k = n/2,n/4,n/8,...,*。 它完全运行Θ(的log(n))倍 - 这是通过连续分裂降低n/2个至1所需要的,以便通过2
对于?每一个值,而不管该值,内循环运行n次,所以内循环+体运行在Θ(n)时间。
由于无论外层循环的值如何,内层循环+主体都需要相同的时间,所以我们需要将外层循环运行的次数乘以内层循环+主体的运行时间。这是Θ(n log(n))。
复杂嵌套循环,利用外环可变逐渐缩小了一半每次迭代
相关文章
- [译]《iOS Human Interface Guidelines》——Activity活动
- 甄建勇:五分钟搞定MMU
- 2021两院院士揭榜!清华李克强、张亚勤教授双双当选,乔红等11位女科学家上榜
- Github热榜:2021年33篇最酷AI论文综述!多位华人作者入选
- [译]《iOS Human Interface Guidelines》——Popover弹出框
- 甄建勇:五分钟搞定Cache(上)
- centos vim权限不足怎么办
- SCP不用密码传输文件
- 怎样在spyder中查看函数源码
- 更沉浸的元宇宙来了!全新「化学触觉」让你体会逼真的冷与热
- 甄建勇:五分钟搞定Cache(下)
- centos vim高亮失败怎么办
- 市值冲顶2.59万亿美元!苹果2025年要出全自动驾驶车,开放座椅,无方向盘
- 安卓之王来了!世界首款4nm芯天玑9000问世,狂揽10项全球第一
- 甄建勇:五分钟搞定计算机的前世今生
- anaconda 安装pil失败怎么办
- 丘成桐拉来一位大牛!又一位国际顶尖数学物理学家加盟清华
- iOS压缩图片大小
- 用Xcode创建C++工程测试LeetCode代码
- 《Motion Design for iOS》(二)