Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 替换嵌套循环的设计模式_Algorithm_Design Patterns - Fatal编程技术网

Algorithm 替换嵌套循环的设计模式

Algorithm 替换嵌套循环的设计模式,algorithm,design-patterns,Algorithm,Design Patterns,是否有任何设计模式或其他方法来替换大量嵌套循环? 唯一的目的是提高性能 e、 g for(inti=0;ifor(intx=0;x

是否有任何设计模式或其他方法来替换大量嵌套循环? 唯一的目的是提高性能

e、 g

for(inti=0;i
for(intx=0;x<2000*2000*2000;x++)
{
//如果需要smth,可以在这里计算i,j,k的实际值
//做点什么
}
用于(int x=0;x<2000*2000*2000;x++)
{
//如果需要smth,可以在这里计算i,j,k的实际值
//做点什么
}

一般来说不是。设计模式更多的是关于如何组织代码,使其易于理解、可维护、可扩展等。因此,您可能最终得到更高效的代码,但不一定如此

如果您的算法要求您访问大小为2000的三维数据结构中的每个元素,那么没有设计模式可以提供帮助,您只有一个n^3算法,对此您无能为力


唯一需要改进的地方是,如果您的算法被证明是幼稚的,并且可能访问了比严格要求更多的元素。上面的harrisunderwork通过询问您是否正在搜索来暗示这一点;如果是这样,可能会使搜索算法更有效,但同样,这不是关于设计模式的问题。

不。设计模式更多的是关于如何组织代码,使其易于理解、可维护、可扩展等。因此,您可能会得到更高效的代码,但不一定如此

如果您的算法要求您访问大小为2000的三维数据结构中的每个元素,那么没有设计模式可以提供帮助,您只有一个n^3算法,对此您无能为力


唯一需要改进的地方是,如果您的算法被证明是幼稚的,并且可能访问了比严格要求更多的元素。上面的harrisunderwork通过询问您是否正在搜索来暗示这一点;如果是这样,也许可以提高搜索算法的效率,但这不是关于设计模式的问题。

您是什么在循环中做什么?您是否使用此算法搜索某些内容?设计模式可能不会提高性能,只有改进算法,性能才会提高。设计模式实际上可能会由于堆栈开关等的开销而影响性能。您在循环中做什么?您是否使用此算法搜索某些内容?设计模式可能不会提高性能,只有改进算法,性能才会提高。设计模式实际上可能会由于堆栈开关等的开销而影响性能。您不能使用此逻辑在三维数据类型中搜索。在迭代25%的项后,您的x值将变为无穷大或负值,因为int为32位,表示大约2*10^9(选择时签名)但是你需要迭代到8*10^9@Saeed-您的注释取决于未指定的语言和计算机体系结构。您不能使用此逻辑在三维数据类型中搜索。在迭代25%的项后,您的x值将变为无穷大或负值,因为int为32位,表示大约2*10^9(选择时签名)但是你需要迭代到8*10^9@Saeed-您的评论取决于未指定的语言和机器体系结构。
for (int i=0; i<2000; i++)
{
    for (int j=0; j<2000; j++)
    {
       for (int k=0; k<2000; k++)
       {

       }
    }
}
for (int x=0; x < 2000*2000*2000; x++)
{
    // you can calculate here real values of i,j,k if you need this for smth
    // do something
}