Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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/3/arrays/14.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
Java 多维数组中的列排序_Java_Arrays_Sorting - Fatal编程技术网

Java 多维数组中的列排序

Java 多维数组中的列排序,java,arrays,sorting,Java,Arrays,Sorting,这是根据m×n矩阵的列对其进行排序的正确方法吗?谢谢对于这个问题,选择排序是最好的吗 排序是一个mxn双值数组 for (int j = 0; j < sorted[0].length; j++) { for (int i = 0; i < sorted.length - 1; i++) { double currentMin = sorted[i][j]; int minIndex = i; for

这是根据m×n矩阵的列对其进行排序的正确方法吗?谢谢对于这个问题,选择排序是最好的吗

排序是一个mxn双值数组

 for (int j = 0; j < sorted[0].length; j++)
  {

     for (int i = 0; i < sorted.length - 1; i++) 
     {

        double currentMin = sorted[i][j];
        int minIndex = i;

        for (int row = i + 1; row < sorted.length; row++)
        {

           if (currentMin > sorted[row][j]) 
           {
              currentMin = sorted[row][j];
              minIndex = row;
           }
        }
        if (minIndex != i) 
        {
           sorted[minIndex][j] = sorted[i][j];
           sorted[i][j] = currentMin;
        }

     }
  }
  return sorted;
for(int j=0;jsorted[row][j])
{
currentMin=已排序的[行][j];
minIndex=行;
}
}
if(minIndex!=i)
{
已排序的[minIndex][j]=已排序的[i][j];
排序后的[i][j]=currentMin;
}
}
}
返回排序;

}

我对代码进行了编号,以便在我的描述中可以方便地引用部分代码

1. for (int j = 0; j < sorted[0].length; j++)
  {

2.     for (int i = 0; i < sorted.length - 1; i++) 
     {

3.        double currentMin = sorted[i][j];
3.        int minIndex = i;

4.        for (int row = i + 1; row < sorted.length; row++)
        {

5.           if (currentMin > sorted[row][j]) 
           {
              currentMin = sorted[row][j];
              minIndex = row;
           }
        }
6.        if (minIndex != i) 
        {
           sorted[minIndex][j] = sorted[i][j];
           sorted[i][j] = currentMin;
        }

     }
  }
  return sorted;
}
1。对于(int j=0;jsorted[row][j])
{
currentMin=已排序的[行][j];
minIndex=行;
}
}
6.如果(minIndex!=i)
{
已排序的[minIndex][j]=已排序的[i][j];
排序后的[i][j]=currentMin;
}
}
}
返回排序;
}
  • 遍历所有列
  • 遍历所有行
  • 为要检查的第一个项目设置当前最小索引和最小索引。这只是为了防止它们是实际的最小值。此外,在前进的过程中,我们还有一些东西需要检查
  • 从尚未排序的行开始遍历所有行
  • 如果当前最小值大于当前列和行的增量#4(此处仅增加行),则相应地设置当前最小值和最小索引
  • 这是在检查所有行的最低值之后。如果最小索引不是i(我们在步骤#3中设置的值),则相应地更改它。将最小值放在步骤#3的索引处,并将步骤#3中的值放在找到最小索引的位置(触发器)
  • 步骤1和2确保检查了每个值。
    步骤4-6找到最小值并将其放在正确的位置。在这些步骤的每次迭代中,只有一个值被移动。

    我对代码进行了编号,以便在我的描述中可以很容易地引用部分代码

    1. for (int j = 0; j < sorted[0].length; j++)
      {
    
    2.     for (int i = 0; i < sorted.length - 1; i++) 
         {
    
    3.        double currentMin = sorted[i][j];
    3.        int minIndex = i;
    
    4.        for (int row = i + 1; row < sorted.length; row++)
            {
    
    5.           if (currentMin > sorted[row][j]) 
               {
                  currentMin = sorted[row][j];
                  minIndex = row;
               }
            }
    6.        if (minIndex != i) 
            {
               sorted[minIndex][j] = sorted[i][j];
               sorted[i][j] = currentMin;
            }
    
         }
      }
      return sorted;
    }
    
    1。对于(int j=0;jsorted[row][j])
    {
    currentMin=已排序的[行][j];
    minIndex=行;
    }
    }
    6.如果(minIndex!=i)
    {
    已排序的[minIndex][j]=已排序的[i][j];
    排序后的[i][j]=currentMin;
    }
    }
    }
    返回排序;
    }
    
  • 遍历所有列
  • 遍历所有行
  • 为要检查的第一个项目设置当前最小索引和最小索引。这只是为了防止它们是实际的最小值。此外,在前进的过程中,我们还有一些东西需要检查
  • 从尚未排序的行开始遍历所有行
  • 如果当前最小值大于当前列和行的增量#4(此处仅增加行),则相应地设置当前最小值和最小索引
  • 这是在检查所有行的最低值之后。如果最小索引不是i(我们在步骤#3中设置的值),则相应地更改它。将最小值放在步骤#3的索引处,并将步骤#3中的值放在找到最小索引的位置(触发器)
  • 步骤1和2确保检查了每个值。
    步骤4-6找到最小值并将其放在正确的位置。在这些步骤的每次迭代中,只移动一个值。

    非常感谢,我现在看到了。@user3358116所以,请单击箭头向上投票我的答案,然后单击V接受它:)非常感谢,我现在看到了。@user3358116所以,请单击箭头向上投票我的答案,然后在V中单击以接受它:)这是选择排序,而不是冒泡排序。选择排序从尚未排序的值中选择下一个值,然后将其与目标位置中的任何值交换(每个元素交换一次)。在冒泡排序中,值与每个元素在其当前位置和目标位置之间交换(每个元素最多交换n次)。代码选择按递增顺序对2D数组的每列进行排序。这是选择排序,而不是冒泡排序。选择排序从尚未排序的值中选择下一个值,然后将其与目标位置中的任何值交换(每个元素交换一次)。在冒泡排序中,值与每个元素在其当前位置和目标位置之间交换(每个元素最多交换n次)。您选择的代码按递增顺序对二维数组的每一列进行排序。