Я хочу понять алгоритм «медианы медиан» на следующем примере:
У нас есть 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, которые упоминаются в википедия
и поэтому T(n) <= T(n/5) + T(7n/10) + O(n)
терпит неудачу.
Кстати, в примере с Википедии я получаю результат рекурсии как 36. Однако истинная медиана равна 47.
Итак, я думаю, что в некоторых случаях эта рекурсия может не возвращать истинную медиану медиан. Я хочу понять, где моя ошибка.