xaxa3217 писал(а):
Цитата:
Достаточно подсчитать общее количество чисел для каждого значения - делается за один проход и дальше хранить только эти данные (вместо массива).
а как потом обращаться к требуемым данным быстро? да тот же поиск в отсортированном массиве будет логарифмическим против ваших O(n), тем более никаких ограничений на числа не накладывается - вещественный тип вмещает в себя как минимум 2^32 различных состояний.
Не надо никуда обращаться.
Если числа принимают только 10 значений, то достаточно знать их количество в каждом из значений, всё остальное вычисляется.
И массив хранить тоже не требуется.
Например: Имея таблицу: 0-1000;1-1;2-0;3-0;4-0;5-1000 ... (это количество чисел каждого значения).
Я легко вычисляю что число в отсортированом массиве с номером 1000 равно нулю, с номером 1001 равно единице, с номером 1002 равно пяти, а также что первое число равное пяти находится на 1002 м месте.
Для этого никакой массив не нужен.
Для данной задачи не нужна никакая сортировка, да и массив не нужен.
Для случая когда с числами связаны какие-то данные тоже надо разжевать? Почему там не требуются алгоритмы сортировки с временем n*log(n) , а достаточно n ?
Особенности работы файла подкачки к оценке скорости работы алгоритма не имеют отношения.