Find minimum and maximum element in an array with divide and conquer

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

#include <stdio.h>
#include <stdlib.h>

int max(int arr[], int l, int h)
{
if(h - l + 1 == 1)
{
return arr[l];
}
if(h - l + 1 == 2)
{
if(arr[l] < arr[h])
{
return arr[h];
}
else
{
return arr[l];
}
}

int m = l + (h - l)/2;

int max1 = max(arr, l, m);
int max2 = max(arr, m+1, h);

if(max1 < max2)
{
return max2;
}
else
{
return max1;
}
}

int min(int arr[], int l, int h)
{
if(h - l + 1 == 1)
{
return arr[l];
}
if(h - l + 1 == 2)
{
if(arr[l] < arr[h])
{
return arr[l];
}
else
{
return arr[h];
}
}

int m = l + (h - l)/2;

int min1 = min(arr, l, m);
int min2 = min(arr, m+1, h);

if(min1 < min2)
{
return min1;
}
else
{
return min2;
}
}


int main(void) {

printf("Enter number of elements - ");

int n;
scanf("%d", &n);

int arr[n];
for(int i = 0; i < n; i++)
{
printf("enter number");
scanf("%d", &arr[i]);
}

printf("Maximum number - %d\n", max(arr, 0, n-1));

printf("Minimum number - %d\n", min(arr, 0, n-1));

return 0;
}

freecode