gpt4 book ai didi

c - 当内循环索引不等于外循环索引时的嵌套循环

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:00 24 4
gpt4 key购买 nike

当其索引等于外循环索引时跳过内循环的嵌套循环逻辑。

在内部循环中使用 if 语句达到以下效果:

for (i=0;i<N;i++)
for (j=0;j<N;j++)
if (j!=i)
... some code

我相信这给了我预期的结果,但是否有我可能不知道的 CPU 消耗较少的方法?

最佳答案

如果你可以假设N <= i ,您可以将内部循环拆分为 2 个独立的 for循环以减少测试次数:

for (i = 0; i < N; i++) {
for (j = 0; j < i; j++) {
... some code
}
/* here we have j == i, skip this one */
j++;
for (; j < N; j++) {
... same code
}
}

这会产生更多的代码,但对 j 的测试却减少了一半.但是请注意,如果 N是一个常量,编译器可能会更有效地展开原始的内部循环。仔细的基准测试是确定此解决方案是否值得为您的问题、编译器和体系结构付出努力的唯一方法。

为了完整起见,这段代码可以简化为:

for (i = 0; i < N; i++) {
for (j = 0; j < i; j++) {
... some code
}
/* here we have j == i, skip this one */
while (++j < N) {
... same code
}
}

关于c - 当内循环索引不等于外循环索引时的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933275/

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