标签: nested-loops

如何找出哪个嵌套for循环更好?

有人问我一个问题:在以下两种情况中,哪一项是最快的:

情况1:假设int count = 0;

for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 5; j++)
    {
        count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

情况2:假设int count = 0;

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 10; j++)
    {
        count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这两个场景中,计数的最终值将为50.但我不确定哪一个会更快?我认为CASE II更快但不确定......

如果有人能对它有所了解,那就太好了.哪个更快,为什么?

c c++ loops nested-loops

1
推荐指数
1
解决办法
2463
查看次数

嵌套 foreach 循环,在循环内中断

我尝试创建一个带有嵌套 foreach 循环的列表。第一个循环是循环一些数字,第二个循环是循环日期。我想写一个数字到一个日期。所以还有一个函数来检查它。但结果是数字多次写入日期。

出来是这样的:

number 5 is on 2013.01.15;
number 5 is on 2013.01.16;
number 5 is on 2013.01.17;
number 6 is on 2013.01.15;
number 6 is on 2013.01.17;
Run Code Online (Sandbox Code Playgroud)

编码 :

function create_event($numbers,$available_dates) {
  foreach($numbers as $number) {
    foreach($avaliable_dates as $av_date) {

      $date_check= dateCheck($av_date,$number);

      if ($date_check == 0) {
        echo "number ".$number." is on ".$av_date;
        break;
      } else {
        $send_again[] = $number;
      }

    }
  }
  create_event($send_again,$avaliable_dates);
}
Run Code Online (Sandbox Code Playgroud)

我认为内部循环不会中断。

php foreach nested-loops

1
推荐指数
1
解决办法
9791
查看次数

在Java中嵌套while循环

我在java程序中遇到了一些嵌套的while循环问题.从我调试的代码开始,我的代码会检查第二个while循环语句,然后永远退出循环.我不知道为什么会发生这种情况所以我会在这里发布代码:

while (current != null) {
        if(id == current.getMovie().getId()) {
           movieExists = true;
           movie = current;
           while (checkCurrent == movie) {
              showingPointer = checkCurrent.getMovie().getLinkHead();
              while (showingPointer != null) {
                 if (cal.compareTo(showingPointer.getShowing().getShowingCalendar()) == 0) {
                    return false;
                 }
                 showingPointer = showingPointer.getNext();
              }
              checkCurrent = checkCurrent.getNext();       
           }        
        }
        current = current.getNext();
     }
Run Code Online (Sandbox Code Playgroud)

java loops while-loop nested-loops

1
推荐指数
1
解决办法
807
查看次数

如何在scheme中创建嵌套循环

我是scheme的新手,我正在尝试创建嵌套循环,其中C代码将如下所示: -

for(i = -1, a = 0; i > -5, a < 5; i--, a++)
{ 
   for(j = i, b = 0; j < (abs(i)), b < 5; j++, b++)
   { 
      <do something>
   }
}
Run Code Online (Sandbox Code Playgroud)

我在计划中用这个概念尝试过类似的东西: -

(let oloop( (i -1) (a 0))
            (display i)(display a) (newline) 
            (if (and (> i -5) (< a 5)) (oloop((- i 1) (+ a 1))))))
Run Code Online (Sandbox Code Playgroud)

我无法嵌套所有四个循环加上面的代码不起作用.

请建议.

scheme for-loop nested-loops

1
推荐指数
1
解决办法
1293
查看次数

使用生成器代替嵌套循环

我有以下嵌套循环。但在时间上效率低下。所以使用发电机会好得多。你知道怎么做吗?

x_sph[:] = [r*sin_t*cos_p for cos_p in cos_phi for sin_t in sin_theta for r in p]     
Run Code Online (Sandbox Code Playgroud)

似乎你们中的一些人认为(查看评论)在这种情况下使用生成器没有帮助。我的印象是使用生成器将避免将变量分配给内存,从而节省内存和时间。我错了吗?

python iteration generator nested-loops

1
推荐指数
1
解决办法
1235
查看次数

LISP嵌套循环并行执行.如何强制它按顺序执行?

过去两周我一直在慢慢学习Lisp.我遇到过Lisp并行执行两个循环的情况,而不是我的目标.如果我理解正确,我想要实现的将按顺序分类.为了让您了解会发生什么,我们可以看看以下内容:

(loop for x in '(a b c d e)
      for y in '(1 2 3 4 5)
        collect (list x y))
Run Code Online (Sandbox Code Playgroud)

使用这种类型的编码,可以得到:

((A 1) (B 2) (C 3) (D 4) (E 5))
Run Code Online (Sandbox Code Playgroud)

但我要求的是:

((A 1) (A 2) (A 3) (A 4) (A 5) (B 1) (B 2) (B 3) and so on
Run Code Online (Sandbox Code Playgroud)

我需要用Loop来改变以获得这种期望的结果?如果我在使用"顺序"一词时出错了,请纠正我.我一直在阅读它,但我有点难以理解这一点.

lisp common-lisp nested-loops sequential

1
推荐指数
1
解决办法
113
查看次数

项目Euler任务#8在c ++中,代码返回错误的答案,因为微妙的原因

我正在解决项目欧拉问题,我早早就达到了死胡同 - 我几乎可以肯定我的代码是正确的,但我的答案并不正确.

具有最大乘积的1000位数字中的四个相邻数字是9×9×8×9 = 5832.

73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725 7163626956188267042825248360082 3257530420752963450

找到具有最大产品的1000位数字中的十三个相邻数字.这个产品有什么价值?

我的方法很简单 - 这是我在没有任何优化的情况下首先解决问题,只是为了看看我是否可以解决它:

#include <string>
#include <iostream>
#include <stdlib.h> // atol ASCII to Integer function


int main(){

std::string digits =    "73167176531330624919225119674426574742355349194934";
            digits +=   "96983520312774506326239578318016984801869478851843";
            digits +=   "85861560789112949495459501737958331952853208805511";
            digits +=   "12540698747158523863050715693290963295227443043557";
            digits +=   "66896648950445244523161731856403098711121722383113";
            digits +=   "62229893423380308135336276614282806444486645238749";
            digits +=   "30358907296290491560440772390713810515859307960866";
            digits +=   "70172427121883998797908792274921901699720888093776";
            digits +=   "65727333001053367881220235421809751254540594752243";
            digits +=   "52584907711670556013604839586446706324415722155397";
            digits +=   "53697817977846174064955149290862569321978468622482";
            digits …
Run Code Online (Sandbox Code Playgroud)

c++ nested-loops

1
推荐指数
1
解决办法
1342
查看次数

嵌套循环Python

嗨我正在使用嵌套循环,但无法找到一种方法为我的嵌套循环开始一个新行:

for i in range(0,10):   
    for j in range(10):
        print(i,end =" ")
Run Code Online (Sandbox Code Playgroud)

产量

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 …

python nested-loops python-3.x

1
推荐指数
1
解决办法
595
查看次数

SQL Server使用嵌套循环,因为估计的行数很差

我使用SQL Server 2008 R2.我创建了一个临时表,然后用1000行填充临时表.

Create Table #Temp
(
  ID Int,
  res INT
)

Insert Into #Temp 
VALUES (10004, 2246), (10005, 2246), (10006, 2246), (10007, 2246),
       (10008, 2246), (10009, 2246), (10010, 2246), (10011, 2246),
       (10013, 2246), (10014, 2246), (10015, 2246), (10016, 2246),
       (10017, 2246), (10018, 2246), (10019, 2246), (10020, 2246),
       (10021, 2246), ................ 
Run Code Online (Sandbox Code Playgroud)

我有另一个名为的表Item.它有大约30000条记录.

我有一个INNER JOIN介于Item我和临时表之间.

Select 
    * 
From 
    Inventory.Item 
Inner Join
    #Temp On (#Temp.ID = item.MasterID And MRes = ExRestaurantID)
Run Code Online (Sandbox Code Playgroud)

正如您在下面的三张图片中看到的,SQL Server已经为我的查询创建了一个执行计划,但在他的计划中,它估计我的Item表只有一行,因此它使用了嵌套循环连接. …

sql-server temp-tables nested-loops sql-server-2008-r2 sql-execution-plan

1
推荐指数
1
解决办法
461
查看次数

用户输入打破嵌套循环

是否有一种有效的方法可以通过让用户在他们想要突破的特定时间(例如按键)简单地提供输入来打破嵌套循环?我在循环中有条件语句,我可以用它来打破循环,但是如果我只是想在任何时候停止循环但仍然希望其余的代码运行,有没有一种简单的方法来做到这一点?为了澄清动机,我想做一些事情:

for x in xrange(1000):
    for y in xrange(1000):
        for z in xrange(1000):
            print x,y,z #function of loop
            if (user_has_pressed_key) == True: #a user input that 
                                               #can come at any time
                                               #but there should NOT be 
                                               #a prompt needed for each iteration to run
                break
        else:
            continue
        break
    else:
        continue
    break
Run Code Online (Sandbox Code Playgroud)

我考虑过使用原始输入,但不希望循环等待用户的每次迭代,因为会有很多次迭代.在使用不同的软件包时,似乎有一些建议的解决方案,但即使这些也似乎只是Windows特定的.我在多台计算机上运行此代码,因此理想情况下希望它在不同的操作系统上运行.

python user-interface nested-loops python-2.7

1
推荐指数
1
解决办法
161
查看次数