如何查找二维数组中最小值所在的具体行和列
定位二维数组最小值的行和列索引
我不需要找出二维数组里的最小值本身,只需要确定最小值所在的具体行和列位置。下面是我已经完成的可运行代码(已将提示文本改为中文,并补充了定位最小值位置的逻辑):
import java.util.Scanner; public class MinPositionFinder { public static void main(String[] args) { Scanner dati = new Scanner(System.in); int[][] a; int n, m, i, j, minRow, minCol; // 输入行数(限制1-20) do { System.out.print("请输入行数(最大20):"); n = dati.nextInt(); } while (n < 1 || n > 20); // 输入列数(限制1-20) do { System.out.print("请输入列数(最大20):"); m = dati.nextInt(); } while (m < 1 || m > 20); // 初始化数组并输入元素,同时跟踪最小值位置 System.out.println("请输入数组元素:"); a = new int[n][m]; // 默认第一个元素为最小值位置 minRow = 0; minCol = 0; for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { System.out.print("请输入元素[" + i + "][" + j + "]:"); int v = dati.nextInt(); a[i][j] = v; // 比较当前元素与当前最小值,更新位置 if (a[i][j] < a[minRow][minCol]) { minRow = i; minCol = j; } } } // 打印输入的数组 System.out.println("\n你输入的数组为:"); for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { System.out.print(a[i][j] + " "); } System.out.println(); } // 输出最小值的行和列位置 System.out.println("\n最小值所在的行:" + minRow + ",列:" + minCol); dati.close(); } }
说明
- 原代码仅实现了数组的输入与打印,补充逻辑后,在输入元素的过程中就会实时比较并更新最小值的位置,避免额外遍历一次数组。
- 如果数组中存在多个相同的最小值,这段代码会返回第一个出现的最小值的行和列索引。
内容的提问来源于stack exchange,提问作者newbieprogammer
相关产品推荐
相关产品推荐

