Несколько максимальных чисел из массива
Подскажите, пожалуйста, можно ли вывести несколько макс. чисел по типу
var arr = [15, 8, 47, 19, 23], max = Math.max.apply(null, arr); alert(max); ??? |
ChayNik,
отсортируйте массив по убыванию и возьмите его срез нужно размера. Можно сортировать и по возрастанию, но срез получать с конца массива. |
Цитата:
|
Nexus,
ну а как еще можно? Я другого даже и не представляю. :) |
Цитата:
Ваш способ самый правильный. |
Цитата:
|
Цитата:
|
Цитата:
|
если массив не особо крупный, то можно остановиться на варианте с сортировкой (O(n*ln(n)) и не морочить себе голову. :)
а так - вариант с перебором достигает почти линейной сложности. В худшем случае это будет O(n*ln(k)), где k - сколько макс. элементов надо выбрать. Для этого надо использовать "кучу", в которой держать выбранные наибольшие элементы. Если ещё и сохранять наименьший выбранный элемент, то (когда уже выбрали k элементов), можно предварительно сравнивать с ним, тогда примерно в половине итераций кучу трогать не понадобится. |
Спасибо большое :)
|
Часовой пояс GMT +3, время: 04:33. |