C语言中求数组的最小值和最大值

#include <stdio.h>

int main(void)
{
    int a[7] = {45,32,86,56,24,98,85};
    int min, max;
    min = a[0]; max = a[0];    
    int i;
    for (i = 0; i < 7; i ++)
    {
        if (a[i] < min)
            min = a[i];
        if (a[i] > max)
            max = a[i];
    }
    printf("min = %d\n", min);
    printf("max = %d\n", max);
    return 0;
}

 

C语言中,找到数组中最小值最大值通常涉及到遍历数组元素并比较它们的值。这里有两种常见的方法: 1. **循环法**: - 初始化两个变量,`min`用于存储当前找到的最小值,初始时设为数组的第一个元素;`max`用于存储最大值,初始时也设为第一个元素。 - 使用for或while循环遍历数组,每次迭代都检查当前元素是否比`min`小(如果是,则更新`min`),或是否比`max`大(如果是,则更新`max`)。 - 循环结束后,`min`和`max`将分别存储数组中最小值最大值。 ```c int arr[] = {5, 3, 9, 1, 7}; int min = arr[0], max = arr[0]; for (int i = 1; i < sizeof(arr) / sizeof(arr[0]); i++) { if (arr[i] < min) { min = arr[i]; } if (arr[i] > max) { max = arr[i]; } } ``` 2. **递归法**(适用于较小型数组,因为递归会有栈溢出的风险): - 如果数组只有一项,那么它既是最大值也是最小值。 - 对于大于一的数组,可以将数组分为两部分:首元素和剩余部分,递归地找出首元素和其他部分的最大值最小值,然后比较这两个结果。 ```c // 请注意,这只是一个概念示例,递归版查找最小最大值在实际项目中并不常用 int findMinMax(int arr[], int start, int end, int *min, int *max) { if (start == end) { *min = arr[start]; *max = arr[start]; return 0; } else { int mid = (start + end) / 2; int leftMin = findMinMax(arr, start, mid, min, NULL); int leftMax = findMinMax(arr, start, mid, NULL, &max); int rightMin = findMinMax(arr, mid+1, end, min, NULL); int rightMax = findMinMax(arr, mid+1, end, NULL, &max); *min = leftMin < rightMin ? leftMin : rightMin; *max = leftMax > rightMax ? leftMax : rightMax; return 0; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员张小妍

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

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

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

打赏作者

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

抵扣说明:

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

余额充值