6-3 求二维数组中的最大值

本题要求实现一个函数,可计算二维数组中的最大值。

函数接口定义:

int  fun(int a[][N]);

在这里解释接口参数。例如:其中 N 和 D 都是用户传入的参数。 N 的值不超过int的范围; D 是[0, 9]区间内的个位数。函数须返回 N 中 D 出现的次数。

裁判测试程序样例:


#include <stdio.h>
#define M 3
#define N 4
int  fun(int a[][N]);

int main()
{
    int x[M][N],i,j,max;
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
            scanf("%d",&x[i][j]);
    max=fun(x);
    printf("max=%d",max);
    return 0;
}
/* 请在这里填写答案 */

输入样例:

1 2 3 4
5 6 7 8
9 10 11 12

输出样例:

max=12

 思路:M,N都有固定的值,很明显这是一个3*4矩阵,那么我们可以采取固定行数,改变列数或者固定列数,改变行数从而实现遍历大方法对每个数进行比较,找出最大值即可,别忘了给max赋值

代码如下:

int  fun(int a[][N])
{
    int i,j,max;//max是我们要找得最大值
    max=a[0][0];
    for(i=0;i<M;i++)//这里采取的是固定行数,改变列数的遍历方式
    {
        for(j=0;j<N;j++)
        {
            if(a[i][j]>max)
                max=a[i][j];
        }
    }
    return max;
}

### 回答1: 可以使用双重循环遍历二维数组,依次比较每个元素的大小,找出最大值和最小值。具体实现可以参考以下代码: int max = arr[][]; // 假设第一个元素为最大值 int min = arr[][]; // 假设第一个元素为最小值 for (int i = ; i < row; i++) { for (int j = ; j < col; j++) { if (arr[i][j] > max) { max = arr[i][j]; // 更新最大值 } if (arr[i][j] < min) { min = arr[i][j]; // 更新最小值 } } } printf("最大值为:%d,最小值为:%d", max, min); ### 回答2: 在计算机编程中,经常需要在一个二维数组中找到最大值和最小值。这个问题比较简单,可以通过遍历数组来解决。我们可以用双重循环来遍历这个二维数组,然后用一个变量记录最大值和最小值,遍历完整个数组后返回这两个变量即可。 下面是一个简单的例子来解释这个问题: 假设有一个二维数组,名为array,它有n行m列的元素。我们可以用以下代码来找到这个数组的最大值和最小值: ``` int maxNum = array[0][0]; // 初始化最大值为数组第一个元素 int minNum = array[0][0]; // 初始化最小值为数组第一个元素 // 遍历整个二维数组 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { // 如果当前元素比最大值大,则将最大值更新为当前元素 if (array[i][j] > maxNum) { maxNum = array[i][j]; } // 如果当前元素比最小值小,则将最小值更新为当前元素 if (array[i][j] < minNum) { minNum = array[i][j]; } } } // 返回最大值和最小值 System.out.println("最大值:" + maxNum); System.out.println("最小值:" + minNum); ``` 在这个例子中,我们首先初始化最大值和最小值为二维数组的第一个元素。然后我们用双重循环遍历整个数组,对于每个元素,我们比较它是否大于最大值或小于最小值。如果是,我们分别将最大值和最小值更新为当前元素。最后,我们返回最大值和最小值。 需要注意的是,这个方法的时间复杂度是O(n*m),其中n是二维数组的行数,m是二维数组的列数。因此,在实际应用中,我们需要注意数组的大小,以免时间复杂度过高导致效率低下。 ### 回答3: 为了二维数组中的最大值和最小值,我们可以采用两种主要方法:遍历和排序。 第一种方法是遍历:我们可以使用两个循环来遍历整个二维数组。对于每个元素,我们可以将其与当前的最大值和最小值进行比较,并相应地更新它们的值。这种方法的时间复杂度是O(n²),其中n是二维数组的大小。 以下是利用遍历二维数组中的最大值和最小值的示例代码: ```python def find_max_min(arr): # 初始化最大值和最小值为数组的第一个元素 max_val = arr[0][0] min_val = arr[0][0] # 遍历整个二维数组 for i in range(len(arr)): for j in range(len(arr[0])): # 如果当前元素比最大值还大,更新最大值 if arr[i][j] > max_val: max_val = arr[i][j] # 如果当前元素比最小值还小,更新最小值 if arr[i][j] < min_val: min_val = arr[i][j] # 返回最大值和最小值 return max_val, min_val ``` 第二种方法是排序:我们可以将二维数组中的所有元素放入一个一维数组中,然后使用任何已知的排序算法(如冒泡排序、快速排序等)来排序该一维数组。最大值将是排序后的最后一个元素,最小值将是排序后的第一个元素。这种方法的时间复杂度取决于使用的排序算法,通常为O(nlogn)。 以下是利用排序二维数组中的最大值和最小值的示例代码: ```python def find_max_min(arr): # 将二维数组转换为一维数组 flat_arr = [val for row in arr for val in row] # 对一维数组进行排序 sorted_arr = sorted(flat_arr) # 返回最大值和最小值 return sorted_arr[-1], sorted_arr[0] ``` 无论使用哪种方法,我们都可以很轻松地找到二维数组中的最大值和最小值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏~辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值