Задачка 2 с вариацией:
There is a file that contains 10G(1000000000) number of integers, please find the Median of these integers. you are given 2G memory to do this.
Вариация: у нас есть большой, но не огромный массив с целыми числами вместо файла.
Собственно по ссылке в моем
исходном посте и было указано два решения
(
Read more... )
Comments 10
Числа представляются в позиционной нормальной форме. Т.е., как полином. Или как сумма An*2^n+...+A2*2^2+A1*2^1+A0*2^0. Для вычисления медианы нужно просуммировать все числа, а пототм разделить сумму на количество чисел. Это же самое можно сделать суммируя количество единиц в соответствующих разрядах, если прямое суммирование невозможно по каким-либо причинам (ограничения на разрядную сетку).
Reply
(The comment has been removed)
Reply
(The comment has been removed)
Неточно, зато в одни проход.
Часто - достаточно точно.
Reply
Дальше при итерации по миллиардам помнить эту гипотезу, и если она окажется верной, то будем иметь точную медиану за один проход. Если же окажется что нам подсунули числа с какой-то подставой (типа искусственно подделали первый миллион), то тогда уже придется делать второй проход.
Reply
Leave a comment