A recursive algorithm to traverse through an array and find maximum value.
1 | #include <iostream> |
2 | using namespace std; |
3 | |
4 | int divide_and_conquer(int *field, int lower_range, int upper_range) { |
5 |     int l_max, u_max; |
6 |      |
7 |     if(lower_range == upper_range) return field[lower_range]; |
8 |      |
9 |     int middle = (lower_range + upper_range) / 2; |
10 |      |
11 |     l_max = divide_and_conquer(field, lower_range, middle); |
12 |     u_max = divide_and_conquer(field, middle + 1, upper_range); |
13 |      |
14 |     if(l_max > u_max) return l_max; |
15 |     else return u_max; |
16 | } |
17 | |
18 | int main() { |
19 |     srand(time(0)); |
20 |     int field[11]; |
21 |      |
22 |     for(int i = 1; i < 11; i++) { |
23 |         field[i] = rand() % 50; |
24 |         cout << field[i] << " "; |
25 |     } |
26 |     cout << endl; |
27 |      |
28 |     cout << "Max: " << divide_and_conquer(field, 1, 10) << endl; |
29 |      |
30 |     return 0; |
31 | } |