企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 使用最少数量的比较的数组的最大值和最小值 > 原文: [https://www.geeksforgeeks.org/maximum-and-minimum-in-an-array/](https://www.geeksforgeeks.org/maximum-and-minimum-in-an-array/) **编写 C 函数以返回数组中的最小值和最大值。 您的程序应进行最少的比较。** 首先,我们如何从 C 函数返回多个值? 我们可以使用结构或指针来做到这一点。 我们创建了一个名为`pair`(包含最小和最大)的结构以返回多个值。 ``` struct pair  {   int min;   int max; };   ``` 并且函数声明变为:`struct pair getMinMax(int arr[], int n)`其中`arr[]`是大小为`n`的数组,需要最小和最大值。 **方法 1(简单线性搜索)** 分别将`min`和`max`值初始化为前两个元素的最小值和最大值。 从 3 开始,将每个元素与`max`和`min`进行比较,并相应地更改`max`和`min`(即,如果元素小于`min`则更改`min`,否则,如果元素大于`max`则更改`max`,否则忽略该元素) ## C ``` /* structure is used to return two values from minMax() */ #include<stdio.h> struct pair  {   int min;   int max; };   struct pair getMinMax(int arr[], int n) {   struct pair minmax;        int i;   /*If there is only one element then return it as min and max both*/   if (n == 1)   {      minmax.max = arr[0];      minmax.min = arr[0];           return minmax;   }       /* If there are more than one elements, then initialize min        and max*/   if (arr[0] > arr[1])     {       minmax.max = arr[0];       minmax.min = arr[1];   }     else   {       minmax.max = arr[1];       minmax.min = arr[0];   }       for (i = 2; i<n; i++)   {     if (arr[i] >  minmax.max)             minmax.max = arr[i];     else if (arr[i] <  minmax.min)             minmax.min = arr[i];   }   return minmax; } /* Driver program to test above function */ int main() {   int arr[] = {1000, 11, 445, 1, 330, 3000};   int arr_size = 6;   struct pair minmax = getMinMax (arr, arr_size);   printf("nMinimum element is %d", minmax.min);   printf("nMaximum element is %d", minmax.max);   getchar(); }   ```