我有一个包含n行和s列的数组矩阵。我需要找到包含最小元素的每列的行号。例如,我有数组矩阵
double[][]={{2, 3, 4, 6},
{3, 6, 7.0, 3.3},
{2.1, 3.4, 2, 7.7}
};
这里我期望0,0,2,3。因为在第一列中最小元素在第一行中,在第二列中最小元素在第一行中,对于第三列最小元素在第三行中,对于第四列最小元素是在第一行中在第二排。 我怎样才能在java代码中实现这个目标
答案 0 :(得分:1)
首先,我认为你对数组的行和列感到困惑。您的数组有3行4列。我假设您要查找每行最小元素的列索引。如果是这样,请找到以下代码:
double arr[][] = {{2, 3, 4, 6},
{3, 6, 7.0, 3.3},
{2.1, 3.4, 2, 7.7}
};
for (int i = 0; i < arr.length; i++) {
int column = 0;
for (int j = 1; j < arr[i].length; j++) {
column = (arr[i][column] < arr[i][j]) ? column : j;
}
System.out.println("Smallest element for row " + i + " = " + column +" th column");
}
希望这会有所帮助;)
更新了一个(查找行号):
double arr[][] = {{2, 3, 4, 6},
{3, 6, 7.0, 3.3},
{2.1, 3.4, 2, 7.7}
};
for(int j=0;j<arr[0].length;j++)
{
int row = 0;
for (int i = 1; i < arr.length; i++) {
row = (arr[row][j] < arr[i][j]) ? row : i;
}
System.out.println("Column = " + j + " Row = " + row);
}
答案 1 :(得分:0)
循环。
我用嵌套循环解决了这个问题。 由于这似乎是 gimme代码问题,我将为您提供伪代码以帮助解决您的问题,以便您实施。
double mat[][]={{...},{...}}//declare your 2d array
//loop through each row
for (int i=0;i<mat.length;i++)//note mat.length is number of rows
{
int min_j=0;//for each row reset the lowest column index
//loop through each column
for (int j=0;j<mat[i].length;j++)//note mat[i].length is number of cols for row i
{
//check if this column has the lowest value
if(mat[i][j]<mat[i][min_j])
{
min_j=j;//set the new lowest index
}
}
//print the index of the column with the lowest value for each row
print(min_j+',');
}
希望这是一个很好的起点。您没有指出是否要打印出值,或者将它们存储在不同的数组中,以便将其保留为练习。
您已在评论中指出您希望每行的值最低而不是列。 代码:
double mat[][]={{...},{...}}//declare your 2d array
//loop through each column
for (int i=0;i<mat[i].length;i++)//note mat[i].length is number of columns in row i
{
int min_j=0;//for each column reset the lowest row index
//loop through each row
for (int j=0;j<mat.length;j++)
{
//check if this row has the lowest value
if(mat[j][i]<mat[min_j][i])
{
min_j=j;//set the new lowest index
}
}
//print the index of the row with the lowest value for each column
print(min_j+',');
}
答案 2 :(得分:0)
我做了一些修改,怎么样:
class Main {
public static void main(String[] args) {
double twoDArr[][] = {
{2, 3, 4, 6},
{3, 6, 7, 3.3},
{2.1, 3.4, 2, 7.7}
};
int row = 0;
for(double element[] : twoDArr){
int index = 0;
double auxNum = 999999999.0;
for(int i = 0; i < element.length; i++){
if(element[i] < auxNum){
auxNum = element[i];
index = i;
}
}
System.out.println("row: "+ row + " Smallest: " + auxNum + " Index: " + index);
row++;
}
}
}
结果:
row: 0 Smallest: 2.0 Index: 0
row: 1 Smallest: 3.0 Index: 0
row: 2 Smallest: 2.0 Index: 2