Tag: 嵌套循环

使用C生成所有元组 – 比嵌套循环更好的方法?

我有一个长度为11的数组double x[]和一个函数f(double x[]) 。 我想通过离散化找到函数f()的最小值。 因此对于给定值val1, val2, …, valn我需要一个循环通过{val_1,…,val_n} ^ 11中的x的所有元组。 我可以很容易地使用11个嵌套循环,但这真的是我能做的最有效吗? 编辑:澄清事物:函数f()在11维集上定义。 我想评估一个11维网格的顶点上的函数。 对于网格大小h ,数组x[]的条目的可能值可以是0 , h , 2*h ,…, n*h = val_1,val_2,…,val_n。 所以在开始时应该评估f(val_1, val_1, …, val_1) ,然后是f(val_1, val_1, …,val_1, val_2) ,…和f(val_n, val_n, …, val_n)和f(val_n, val_n, …, val_n) 。 我实际上并不关心顺序,但我确实关心速度,因为有很多这样的元组。 确切地说,有n ^ 11个这样的元组。 因此,对于n = 10 f() ,必须评估10 ^ 11次。 我的计算机每秒可以评估f()约5 * 10 ^ […]

哪个是为嵌套循环声明虚拟变量的更好方法?

方法1的优点是文件大小略小,因为源代码中的文本字符较少: int i, j; for (i = 0; i < numRows; i++) for (j = 0; j < numCols; j++) // 方法2的优点是局部变量的范围较小。 int i; for (i = 0; i < numRows; i++) { int j; for (j = 0; j < numCols; j++) // } 即使在今天的现代计算机中优化的差异可以忽略不计,哪种方法被认为是“更好”的代码? 编辑以澄清此问题不重复: 这个问题基于当前的C11标准,它不允许这样的语法: for (int i = 0; i < […]

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

有人问我一个问题:在以下两种情况中,哪一项是最快的: 情况1:假设int count = 0; for (int i = 0; i < 10; i++) { for (int j = 0; j < 5; j++) { count++; } } 情况2:假设int count = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 10; j++) { count++; } } […]