标签: nested-loops

替代嵌套循环进行比较

我目前正在编写一个程序,需要比较可变大小的ArrayList中的每个文件.现在,我这样做的方式是通过嵌套的代码循环:

         if(tempList.size()>1){
            for(int i=0;i<=tempList.size()-1;i++)
                //Nested loops.  I should feel dirty?
                for(int j=i+1;j<=tempList.size()-1;j++){
                    //*Gets sorted.
                    System.out.println(checkBytes(tempList.get(i), tempList.get(j)));
                }
            }
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些关于嵌套循环必要性的不同意见,我想知道是否有人有更高效的替代方案.

乍看之下,无论哪种方式都需要进行每次比较,因此性能应该相当稳定,但我还是有点确信有一种更清洁的方法可以做到这一点.有什么指针吗?

编辑::为清晰起见,这只是功能的一部分.这些文件已根据长度进行比较并放入存储桶中 - 在浏览完集合的映射后,找到一个长度大于1的存储桶,它会运行它.所以 - 这些都是相同大小的文件.在我得到字节之前,我将进行校验和比较,但是现在我只是想清理循环.

此外,圣母这个网站反应迅速.多谢你们.

EDIT2 ::对不起,为了进一步说明:文件处理部分我有一个很好的把握,我认为 - 首先,我按长度进行比较和排序,然后通过校验和,然后按字节 - 我的问题是如何正确处理需要有效地比较ArrayList中的所有文件,假设它们都需要进行比较.如果一个嵌套循环就足够了,那很酷,我只想检查这是一个合适的方法,按惯例.

java loops nested nested-loops

5
推荐指数
2
解决办法
2万
查看次数

Python中嵌套的WHILE循环

我是Python的初学者,尝试过几个程序.我有类似Python中的以下WHILE循环结构(不完全相同).

IDLE 2.6.4      
>>> a=0
>>> b=0
>>> while a < 4:
      a=a+1
      while b < 4:
         b=b+1
         print a, b


1 1
1 2
1 3
1 4
Run Code Online (Sandbox Code Playgroud)

我期待外循环遍历1,2,3和4.我知道我可以用这样的FOR循环来做这个

>>> for a in range(1,5):
       for b in range(1,5):
           print a,b


1 1
1 2
.. ..
.. .. // Other lines omitted for brevity
4 4
Run Code Online (Sandbox Code Playgroud)

但是,WHILE循环有什么问题?我想我错过了一些显而易见的事情,但无法理解.

答案: 纠正的WHILE循环..

>>> a=0
>>> b=0
>>> while a < 4:
    a=a+1
    b=0
    while b<4:
        b=b+1
        print a,b


1 1
.. .. …
Run Code Online (Sandbox Code Playgroud)

python for-loop while-loop nested-loops

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

Javascript - 嵌套for循环索引的范围

我记得变量是Javascript中的函数作用域.但是,如果我在循环中重新定义局部变量,行为如何.一个常见的用例是嵌套循环.在下面的代码中,如果我将j更改为i,则外部for循环在一次迭代后终止,因为外部作用域中的i值与内部for循环相同.由于我使用var,我期待(类似于其他语言)它在内部fo循环中被重新定义.这是否意味着在JS中,没有办法在函数范围内重新声明和使用局部变量.

for (var i = 0, len = x.length; i < len; i++) {
            ...
            for (var j = 0, len = y.length; j < len; j++) {
                ...
            }
        }
Run Code Online (Sandbox Code Playgroud)

javascript nested-loops

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

Ember.js:如何从Ember.Map查看数据

我想查看按部门分组的一些联系信息(姓名,电子邮件,...),但我无法通过Handlebars实现.

  • X部门

    • 联系x1信息
    • 联系x2信息
    • ...
  • Y部门

    • 联系y1信息
    • 联系y2信息
    • ...

我不知道我提前有多少个部门.因此,在我的控制器中,我尝试在Ember.Map中加载信息,其中部门是其键,而带有联系人信息的数组是每个部门的值.它是这样的:

map = Ember.Map.create();
// Load data from server into map
// m = {'Department X': [{name:'x1','email':'emailx1',...},{...}], 'Department Y':[....], ...}

{{#each department in map}}
    {{department}}
    {{#each contact in map.keys}}
        {{contact.name}} | {{contact.email}}
    {{#each}}
{{#each}}
Run Code Online (Sandbox Code Playgroud)

抛出一个错误,说"EmberCollectionView的内容必须实现Ember.Array.你传递了[object Object]".是否可以通过嵌套数据实现suh任务?欢迎任何帮助.谢谢.

nested-loops handlebars.js ember.js

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

三巢环的时间复杂度?

for(i=0; i<n; i++)
{
    a[i]=0;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            a=3;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个三重嵌套循环.我的书指出运行时间是:O(N)+ O(N ^ 2)= O(N ^ 2)

不应该是O(N ^ 3)?所有3个循环都相互依赖.它将运行N*N*N次.

c for-loop time-complexity nested-loops

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

Java嵌套循环初始化

我是java的新手,所以在嵌套循环中有一段代码我不明白...

for(int i=0; i<3; i++){
 for(int j=1; j<3; j++){
   System.out.println(i + "" + j);
 }
}
Run Code Online (Sandbox Code Playgroud)

它将运行: 01,02,11,12,21,22

但是当我改变这个:

int j=1;
for(int i=0; i<3; i++){
 for(; j<3; j++){
   System.out.println(i + "" + j);
 }
}
Run Code Online (Sandbox Code Playgroud)

它变成这样: 01,02

任何人都可以向我解释一下吗?

java nested-loops

5
推荐指数
3
解决办法
1728
查看次数

R - 多个嵌套循环

我正在尝试编写一个嵌套循环代码来模拟具有 101 行的数据框中的 10 列数据。第一行数据已被指定为起始值。每列应该不同,因为我的矩阵 r 是从随机法线生成的;但是,每列中的结果值完全相同。为循环索引提供一些上下文:

tmax=100; ncol(pop_sims) = 12 (so a total of 10 iterations, 3-12); ncol(r) = 10

for (i in 1:tmax){
 for (j in 3:ncol(pop_sims)){
   for(k in 1:ncol(r)){

   if (pop_sims[i,j]*exp(r[i,k]) <2) {
    pop_sims[i+1,j]<- 0} 
  else {
      pop_sims[i+1,j] <- pop_sims[i,j]*exp(r[i,k])}
}}} 
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激。

更新:我没有使用多个循环,而是省略了矩阵 r 的使用并简化了我的循环。

for (i in 1:tmax){
 for (j in 1:10){

  if (pop_sims[i,j]*exp(r[i,j]) <2) {
    pop_sims[i+1,j]<- 0} 
  else {
      pop_sims[i+1,j] <- pop_sims[i,j]*exp(rnorm(1,mean=0.02, sd=0.1))}
}}
Run Code Online (Sandbox Code Playgroud)

r nested-loops

5
推荐指数
1
解决办法
6万
查看次数

我如何加快这个计划?

我目前正在尝试解决ProjectEuler问题,除了速度之外,我已经解决了所有问题.我几乎可以肯定程序执行速度这么慢的原因是由于嵌套循环.我会喜欢一些关于如何提高速度的建议.我是一名新手程序员,所以我不熟悉很多更高级的方法/主题.

public class Problem12 {

    public static void main(String[] args) {
        int num;

        for (int i = 1; i < 15000; i++) {
            num = i * (i + 1) / 2;
            int counter = 0;

            for (int x = 1; x <= num; x++) {
                if (num % x == 0) {
                    counter++;
                }
            }
            System.out.println("[" + i + "] - " + num + " is divisible by " + counter + " numbers."); …
Run Code Online (Sandbox Code Playgroud)

java performance loops nested-loops

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

具有if语句的嵌套循环的时间复杂度O(N):O(N ^ 4)?

我正在为此片段找出在big-O方面的一个紧要关头:

for(int i = 1 ; i <= n ; i++) {
    for(int j = 1; j <= i*i ; j++) {
        if (j% i == 0){
            for(int k = 0 ; k<j ; k++ )
                sum++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们从最内层循环开始,在最坏的情况下它将运行k = n ^ 2次,占O(N ^ 2)。每次j = m * i时,if语句为true,其中m为任意常数。由于j从1到i ^ 2,这将在m = {1,2,...,i}时发生,这意味着i次为真,并且我最多为n,因此最坏的情况将是是m = {1,2,...,n} = n次。如果i = n,则第二个循环的最坏情况为O(N ^ 2)。外循环的最坏情况复杂度为O(N)。

我认为这将通过以下方式组合:内部循环的O(N ^ 2)*第二循环的O(N ^ 2)*外循环的O(N)在最坏的情况下会产生O( N ^ 5)

但是,if语句保证我们只会到达内循环n次,而不是n ^ 2。但是无论如何,我们仍然需要遍历外部循环n * n ^ 2次。if测试是否会影响代码段的最坏情况下的时间复杂度?

编辑:将j校正为i ^ …

java big-o time-complexity nested-loops

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

将数组2和3访问为一个字符串数组

如何输出:

ID: 0001
Name: Mike
Birthday: London 21/05/1989
Hobby: Reading
Run Code Online (Sandbox Code Playgroud)

我的下面的代码是未定义的,我希望数组城市+日期在生日时在一起.

我的代码不是,请查看下面的代码:

var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];




for(var i = 0 ; i <= input.length ; i++){
  for(var j = 0  ; j <= input.length ; j++){
  for(var i = 0 ; i <= data.length; i++){
  console.log(data[i] …
Run Code Online (Sandbox Code Playgroud)

javascript arrays loops for-loop nested-loops

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