Aim:Write a program to find out maximum and minimum using divide and conquer rule.
Software used: Dev C++
Description:
The Max-Min Problem in algorithm analysis is finding the maximum and minimum value in an array. Initialize values of min and max as minimum and maximum of the first two elements respectively. Starting from 3rd, compare each element with max and min, and change max and min accordingly
Program coding:
#include <iostream>
using namespace std;
void MinAndMax(int arr[], int low, int high, int& min, int& max)
{
if (low == high)
{
if (max < arr[low])
max = arr[low];
if (min > arr[high])
min = arr[high];
return;
}
if (high - low == 1)
{
if (arr[low] < arr[high])
if (min > arr[low])
min = arr[low];
if (max < arr[high])
max = arr[high];
}
else
{
if (min > arr[high])
min = arr[high];
if (max < arr[low])
max = arr[low];
}
return;
}
int mid = (low + high) / 2;
MinAndMax(arr, low, mid, min, max);
MinAndMax(arr, mid + 1, high, min, max);
}
int main()
{
int arr[] = { 7, 2, 9, 3, 1, 6, 7, 8, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
int max = INT_MIN, min = INT_MAX;
MinAndMax(arr, 0, n - 1, min, max);
cout << "The minimum element in the array is " << min << '\n';
cout << "The maximum element in the array is " << max;
return 0;
}
0 Comments
if you have any problem, please let me know