/* 3.(a) W.A.P. to find maximum and minimum in a list of size 'n' using the recursive maximum algorithm. */
#include<stdio.h>
#include<conio.h>
#include<time.h>
clock_t start,finish;
void MaxMin(int a[],int low,int high,int *max,int *min)
{
int mid,max1,min1;
if (low == high) *max = *min = a[low]; /* Only one element exist */
else if (low == (high - 1)) /* Exactly two elements exists */
{
if (a[low] < a[high])
{
*max = a[high];
*min = a[low];
}
else
{
*max = a[low];
*min = a[high];
}
}
else /* More than two elements exists */
{
mid = (low + high) / 2;
MaxMin(a,low,mid,max,min);
MaxMin(a,mid+1,high,&max1,&min1);
if (max1 > *max) *max = max1;
if (min1 < *min) *min = min1;
}
}
void main()
{
int i,n,*a,key,maxval,minval;
clrscr();
printf("How many elements you wish to enter : ");
scanf("%d",&n);
a = (int *)malloc(n * sizeof(int));
printf("\nEnter %d elements : ",n);
for (i = 0; i < n; i++)
scanf("%d",&a[i]);
start = clock();
MaxMin(a,0,n-1,&maxval,&minval);
finish = clock();
printf("\n\nMaximum value = %d",maxval);
printf("\nMinimum value = %d",minval);
printf("\nTime taken is %.2f",(finish - start) / CLK_TCK);
getch();
}
/* OUTPUT
How many elements you wish to enter : 6
Enter 6 elements : 23 5 56 9 110 417
Maximum Value = 417
Minimum Value = 5
Time taken is 0
*/