Min max
#include <stdio.h>
void minmax(int a[], int i, int j, int *min, int *max, int *c)
{
if (i == j)
{
*min = *max = a[i];
}
else if (i == j - 1
{
if (a[i] < a[j])
{
*min = a[i];
*max = a[j];
} else
{
*min = a[j];
*max = a[i];
}
(*c)++;
}
else
{
int mid = (i + j) / 2;
int min1, max1;
minmax(a, i, mid, min, max, c);
min1 = *min;
max1 = *max;
minmax(a, mid + 1, j, min, max, c);
if (min1 < *min)
{
*min = min1;
}
if (max1 > *max)
{
*max = max1;
}
(*c)++;
}
}
int main()
{
int a[] = {10, 2, 3, 0};
int size = sizeof(a) / sizeof(a[0]);
int max;
int min;
int c = 0;
minmax(a, 0, size - 1, &min, &max, &c);
printf("\nMinimum number: %d", min);
printf("\nMaximum number: %d", max);
printf("\nComparison count: %d\n", c);
return 0;
}
Comments
Post a Comment