Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2017, 14:50
Новичок на форуме
Отправить личное сообщение для ChayNik Посмотреть профиль Найти все сообщения от ChayNik
 
Регистрация: 19.10.2017
Сообщений: 2

Несколько максимальных чисел из массива
Подскажите, пожалуйста, можно ли вывести несколько макс. чисел по типу

var arr = [15, 8, 47, 19, 23],
    max = Math.max.apply(null, arr);
    alert(max);


???
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2017, 14:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

ChayNik,
отсортируйте массив по убыванию и возьмите его срез нужно размера. Можно сортировать и по возрастанию, но срез получать с конца массива.
Ответить с цитированием
  #3 (permalink)  
Старый 19.10.2017, 14:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от laimas
ChayNik,
отсортируйте массив по убыванию и возьмите его срез нужно размера. Можно сортировать и по возрастанию, но срез получать с конца массива.
Гениально, я не догадался, что так можно сделать.
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2017, 14:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus,
ну а как еще можно? Я другого даже и не представляю.
Ответить с цитированием
  #5 (permalink)  
Старый 19.10.2017, 15:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от laimas Посмотреть сообщение
Nexus,
ну а как еще можно? Я другого даже и не представляю.
Способов несколько, но они кривоватые.
Ваш способ самый правильный.
Ответить с цитированием
  #6 (permalink)  
Старый 19.10.2017, 15:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
Способов несколько
перебор циклом и поиск? Это же сразу отпадает так как бессмысленно.
Ответить с цитированием
  #7 (permalink)  
Старый 19.10.2017, 15:06
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от laimas Посмотреть сообщение
перебор циклом и поиск? Это же сразу отпадает так как бессмысленно.
Поиск необязателен, можно 1 раз пробежаться по массиву сохранив N наибольших значений.
Ответить с цитированием
  #8 (permalink)  
Старый 19.10.2017, 15:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
сохранив N наибольших значений
Сами то они в очередь на сохранение не станут, нужно сравнение, а это и есть найти.
Ответить с цитированием
  #9 (permalink)  
Старый 19.10.2017, 16:08
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

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

а так - вариант с перебором достигает почти линейной сложности. В худшем случае это будет O(n*ln(k)), где k - сколько макс. элементов надо выбрать. Для этого надо использовать "кучу", в которой держать выбранные наибольшие элементы. Если ещё и сохранять наименьший выбранный элемент, то (когда уже выбрали k элементов), можно предварительно сравнивать с ним, тогда примерно в половине итераций кучу трогать не понадобится.
Ответить с цитированием
  #10 (permalink)  
Старый 19.10.2017, 21:40
Новичок на форуме
Отправить личное сообщение для ChayNik Посмотреть профиль Найти все сообщения от ChayNik
 
Регистрация: 19.10.2017
Сообщений: 2

Спасибо большое
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите сумму четных чисел из массива yaparoff Общие вопросы Javascript 3 18.01.2017 09:37
Запись элементов массива в БД (несколько) espltd AJAX и COMET 4 29.07.2015 13:10
Как получить последние несколько элементов массива? MyBigFriend Общие вопросы Javascript 3 23.10.2013 19:04
Проблема с отбором чисел из массива mindkilla Общие вопросы Javascript 10 05.11.2012 12:03
Несколько различных случайных чисел в диапозоне alexan0308 Общие вопросы Javascript 5 28.11.2011 20:47