使用最少比较次数在C语言中查找数组的最大值和最小值
给定一个整数数组,任务是找到数组中最小和最大的元素,并使用最少的比较次数。
输入
Arr[] = { 1,2,4,5,-3,91 }输出
Maximum element : 91 Minimum Element : -3
解释 − 为了最大限度地减少比较次数,我们将最大值和最小值初始化为Arr[0]。从第二个元素开始,将每个值与min和max进行比较,并相应地更新。
输入
Arr[] = { 10,20,21,31,18,11 }输出
Maximum element : 31 Minimum Element : 10
解释 − 同样,为了最大限度地减少比较次数,我们将最大值和最小值初始化为Arr[0]。从第二个元素开始,将每个值与min和max进行比较,并相应地更新。
下面程序中使用的方法如下:
我们取一个整数数组,其数字为Arr[]
函数getresult( int arr[],int n)用于查找数组中最大和最小的元素,并使用最少的比较次数。
如果只有一个元素,我们将使用arr[0]初始化变量max和min。
对于多个元素,我们将使用arr[1]初始化max,使用arr[0]初始化min。
在for循环内部,从第三个元素(i=2)遍历到最后一个元素。
现在,我们将每个值(arr[i])与min和max进行比较。如果它小于min,则使用arr[i]更新min。如果它大于max,则使用arr[i]更新max。
最后,打印存储在max和min变量中的结果。
示例
#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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP