1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
int maxArray(int arg[], int start, int end);
int main()
{
int low = 0;
int high = 12;
int array[] = {7, 11, 55, 32, 19, 15, 27, 79, 81, 2, 6, 55, 77};
cout << high << endl;
cout << maxArray(array, low, high) <<endl;
return (0);
}
int maxArray(int arg, int start, int end)
{
int size;
size = (end-start)+1;
if (size == 1)
return arg[start];
else if(size%2 != 0)
{
int mid;
mid = (start+end)/2;
if (maxArray(arg, start, mid) > maxArray(arg, mid, end))
return maxArray(arg, start, mid);
else
return maxArray(arg, mid, end);
}
else
{
int leftEnd;
leftEnd = (start+end-1)/2;
int rightStart;
rightStart = (start+end+1)/2;
if (maxArray(arg, start, leftEnd) > maxArray(arg, rightStart, end))
return maxArray(arg, start, leftEnd);
else
return maxArray(arg, rightStart, end);
}
}
|