C语言怎么在数组中找最大值最小值
时间: 2024-11-25 09:09:18 浏览: 54
在C语言中,找到数组中的最大值和最小值可以通过遍历整个数组并逐个比较元素来实现。以下是两种常见的方法:
1. **线性搜索法**:
- 定义两个变量`max`和`min`,分别初始化为数组的第一个元素。
- 使用`for`循环从数组的第二个元素开始遍历,如果当前元素大于`max`,更新`max`;如果小于`min`,更新`min`。
- 循环结束后,`max`就是数组中的最大值,`min`则是最小值。
```c
int array[] = {5, 2, 9, 1, 7};
int max = array[0], min = array[0];
int len = sizeof(array) / sizeof(array[0]);
for (int i = 1; i < len; i++) {
if (array[i] > max)
max = array[i];
else if (array[i] < min)
min = array[i];
}
printf("Max value is %d\n", max);
printf("Min value is %d\n", min);
```
2. **递归法**(对于小型数组可以考虑,但不是推荐做法,因为效率较低):
- 如果数组只有一个元素,那么这个元素既是最大值也是最小值。
- 对于有多个元素的数组,先取第一个元素作为初始最大值和最小值,然后递归地在剩余元素中寻找新的最大值和最小值。
```c
void findMinMax(int arr[], int start, int end, int &max, int &min) {
if (start == end) {
if (arr[start] > min)
min = arr[start];
else if (arr[start] < max)
max = arr[start];
} else {
if (arr[start] > max)
max = arr[start];
if (arr[start] < min)
min = arr[start];
findMinMax(arr, start + 1, end, max, min);
}
}
// 调用函数
int main() {
int array[] = {5, 2, 9, 1, 7};
int max, min;
findMinMax(array, 0, sizeof(array) / sizeof(array[0]) - 1, max, min);
printf("Max value is %d\n", max);
printf("Min value is %d\n", min);
return 0;
}
```
阅读全文