如何计算数组中的最大和最小值?c语言
时间: 2024-12-23 21:19:47 浏览: 6
在C语言中,计算数组中的最大值和最小值可以采用两种常见的方法:
1. **遍历法**:
- 初始化两个变量 `max` 和 `min` 分别为数组的第一个元素,假设它是初始的最大值和最小值。
- 使用一个for循环遍历整个数组,如果当前元素大于 `max`,则更新 `max`;如果当前元素小于 `min`,则更新 `min`。
```c
int arr[] = {5, 2, 9, 1, 7};
int len = sizeof(arr) / sizeof(arr[0]);
int max = arr[0], min = arr[0];
for (int i = 1; i < len; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
```
2. **递归法**(对于小型数组,递归不是必需,但这里展示如何实现):
- 对于只有一个元素的数组,直接返回该元素作为最大值和最小值。
- 对于更大的数组,先比较第一个元素和第二个元素,然后将较大的那个作为新的数组,再对剩下的部分递归求解最大值和最小值。
```c
int findMinMax(int arr[], int start, int end, int *max, int *min) {
if (start == end) {
*max = arr[start];
*min = arr[start];
return 1;
} else {
int tempMax = arr[start] > arr[end] ? arr[start] : arr[end];
int tempMin = arr[start] < arr[end] ? arr[start] : arr[end];
*max = tempMax;
*min = tempMin;
return findMinMax(arr, start + 1, end - 1, max, min);
}
}
int arr[] = {5, 2, 9, 1, 7};
int len = sizeof(arr) / sizeof(arr[0]);
int max, min;
findMinMax(arr, 0, len - 1, &max, &min);
```
阅读全文