Там нет помощи, но вы должны сканировать Y
.Это займет O(m)
, поэтому вы не можете сделать лучше, чем O(m)
.
Однако Быстрый выбор имеет среднюю производительность O(m)
.По сути, этот алгоритм просто выполняет быструю сортировку, за исключением того, что вы игнорируете все разделы, в которых нет вашего окончательного ответа.
Учитывая, что n < m
мы можем просто соединить один массив с другим и сделать быстрый выбор.
Обратите внимание, что средняя производительность хорошая, но наихудшая производительность квадратичная.Чтобы исправить это, если вы не делаете прогресс достаточно быстро, вы можете переключиться на тот же алгоритм медианы медиан, который дает гарантированную производительность быстрой сортировки (хотя и с плохими константами).Если вы не знакомы с ним, это тот, где вы делите массив на группы по 5, находите медиану каждой группы, а затем повторяете, пока не дойдете до 1 элемента.Затем используйте этот элемент как опору для всего массива.