|
| 1 | +# frozen_string_literal: true |
| 2 | + |
| 3 | +require "test/unit/assertions" |
| 4 | +include Test::Unit::Assertions |
| 5 | + |
| 6 | +def min_max_dc(vector, start_index, end_index) |
| 7 | + if start_index == end_index |
| 8 | + return [vector[start_index], vector[start_index]] |
| 9 | + end |
| 10 | + |
| 11 | + middle = (start_index + end_index) / 2 |
| 12 | + left_min, left_max = min_max_dc(vector, start_index, middle) |
| 13 | + right_min, right_max = min_max_dc(vector, middle + 1, end_index) |
| 14 | + |
| 15 | + min = left_min < right_min ? left_min : right_min |
| 16 | + max = left_max > right_max ? left_max : right_max |
| 17 | + |
| 18 | + [min, max] |
| 19 | +end |
| 20 | + |
| 21 | +assert_equal([1, 5], min_max_dc([1, 2, 3, 4, 5], 0, 4)) |
| 22 | +assert_equal([14, 55], min_max_dc([13, 55, 42, 14, 15], 1, 3)) |
| 23 | +assert_equal([13, 13], min_max_dc([13, 55, 42, 14, 15], 0, 0)) |
| 24 | +assert_equal([14, 15], min_max_dc([13, 55, 42, 14, 15], 3, 4)) |
0 commit comments