Показать сообщение отдельно
  #9 (permalink)  
Старый 19.10.2017, 16:08
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

если массив не особо крупный, то можно остановиться на варианте с сортировкой (O(n*ln(n)) и не морочить себе голову.

а так - вариант с перебором достигает почти линейной сложности. В худшем случае это будет O(n*ln(k)), где k - сколько макс. элементов надо выбрать. Для этого надо использовать "кучу", в которой держать выбранные наибольшие элементы. Если ещё и сохранять наименьший выбранный элемент, то (когда уже выбрали k элементов), можно предварительно сравнивать с ним, тогда примерно в половине итераций кучу трогать не понадобится.
Ответить с цитированием