Возможный дубликат:
может вы сортируете n целых чисел в O(n) амортизированной сложности?
Я должен написать алгоритм, который, учитывая несортированный список целых чисел, возвращает «наименьшее число в файле, которое превышает по крайней мере 90% чисел в файле» или -1, если такое число не существует. Достаточно просто: я сортирую список с помощью сортировки слиянием, затем начинаю с индекса на 90% пути и ищу, чтобы первое число было больше, чем число перед ним.
Однако вторая часть вопроса поставила меня в тупик. Нам дали дополнительную информацию: целые числа представляют зарплаты, то есть все они положительные, и подавляющее большинство из них меньше 1 000 000. По-видимому, с помощью этой дополнительной информации можно написать алгоритм, решающий исходную задачу за время O(n), но я не имею ни малейшего представления, как это возможно. Есть идеи?
Я бы опубликовал то, что я сделал до сих пор, но я не смог ничего придумать.