Предполагая, что массив не отсортирован, эта проблема равна Omega(n)
, так как вам нужно прочитать все элементы [поиск max - это Omega(n)
проблема в несортированном массиве, и эта проблема не легче, чем поиск max].Таким образом, для него нет сублинейного решения.
Существует O(n)
[линейное] решение, использующее алгоритм выбора
1. find the log(n) biggest element. //or sqrt(n) biggest element...
2. scan the array and return all elements bigger/equal it.
(*) Этот псевдокодневерно, если массив содержит дубликаты, но обрезать дубликаты на втором шаге довольно просто.