使用C中最少的比较次数的数组的最大值和最小值

给我们一个整数数组。任务是在最小数量的比较中找到数组的最小和最大元素。

输入项 

Arr[] = { 1,2,4,5,-3,91 }

输出结果 

Maximum element : 91 Minimum Element : -3

解释-在这里,为了最大程度地减少比较次数,我们将使用Arr [0]初始化最大和最小元素。然后从第二个元素开始,将每个值与最小值和最大值进行比较,并相应地进行更新。

输入项 

Arr[] = { 10,20,21,31,18,11 }

输出结果 

Maximum element : 31 Minimum Element : 10

说明-在这里,为了使比较次数最少,我们将使用Arr [0]初始化最大和最小元素。从第二个元素开始,将每个值与最小值和最大值进行比较,并相应地进行更新。

以下程序中使用的方法如下

  • 我们将一个整数数组作为Arr []

  • 函数getresult(int arr [],int n)用于查找数组中最小编号为no的最大和最小元素。比较。

  • 如果只有一个元素,那么我们将使用arr [0]初始化变量max和min。

  • 对于多个元素,我们将使用arr [1]初始化max和使用arr [0]初始化min。

  • 内部for循环从第三个元素(i = 2)开始遍历,直到最后一个遍历。

  • 现在,我们将每个值(arr [i])与最小值和最大值进行比较。如果小于min,则用arr [i]更新min。如果大于max,则使用arr [i]更新max。

  • 最后打印结果存储在最大和最小变量中。

示例

#include <stdio.h>

#include <math.h>

int getresult(int arr[], int n){

   int min=0,max=0;

   /*If there is only one element then return it as min and max both*/

   if (n == 1)

      { min=max=arr[0]; }

   /* If there are more than one elements, then initialize min and max*/

   if (arr[0] > arr[1]){

      max = arr[0];

      min = arr[1];

   }

   else{

      max = arr[1];

      min = arr[0];

   }

   for (int i = 2; i<n; i++){

      if (arr[i] > max)

         max = arr[i];

      else if (arr[i] < min)

         min = arr[i];

   }

   printf(" Minimum element: %d", min);

   printf(" Maximum element: %d", max);

}

/* Driver program to test above function */

int main(){

   int arr[] = {200, 191, 112, -11, 330, 60};

   int n = 6;

   getresult (arr, n);

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Minimum element: -11 Maximum element: 330

以上是 使用C中最少的比较次数的数组的最大值和最小值 的全部内容, 来源链接: utcz.com/z/350239.html

回到顶部