Я хочу понять алгоритм "медианы медианов" в следующем примере:
У нас есть 45 различных чисел, разделенных на 9 групп с 5 элементами каждый.
48 43 38 33 28 23 18 13 8
49 44 39 34 29 24 19 14 9
50 45 40 35 30 25 20 15 10
51 46 41 36 31 26 21 16 53
52 47 42 37 32 27 22 17 54
- Первый шаг - сортировка каждой группы (в этом случае они уже отсортированы)
-
На втором этапе рекурсивно найдите "истинную" медиану медианов (
50 45 40 35 30 25 20 15 10
), т.е. набор будет разделен на 2 группы:50 25 45 20 40 15 35 10 30
сортировка этих 2 групп
30 10 35 15 40 20 45 25 50
медианы составляют 40 и 15 (в случае, если числа равны, мы взяли левую медианную)
поэтому возвращаемое значение равно 15, однако "истинная" медиана медианов (50 45 40 35 30 25 20 15 10
) равна 30, кроме того, существует 5 элементов, меньших 15, которые составляют намного меньше 30% из 45, которые упоминаются в wikipedia
и поэтому T(n) <= T(n/5) + T(7n/10) + O(n)
не работает.
Кстати, в примере в Википедии я получаю результат рекурсии как 36. Однако истинная медиана равна 47.
Итак, я думаю, что в некоторых случаях эта рекурсия может не возвращать истинную медиану медианов. Я хочу понять, где моя ошибка.