10 максимальных элементов
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.157] |
|
|
правила раздела Алгоритмы

| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
10 максимальных элементов
|
Сообщ.
#1
,
|
|
|
|
Кто подскажет.
Есть массив больше 2000 положительных чисел. Как определить первые десять максимальных чисел. |
|
Сообщ.
#2
,
|
|
|
|
сколько дней назад с программированием познакомился?? ;D
заводишь массив из 10 чисел, записываешь туда нули. просматриваешь большой массив по порядку, если какое либо число в малом массиве меньше текущего числа, записываешь на его место таковое число. vot и всё ;D |
|
Сообщ.
#3
,
|
|
|
|
Цитата заводишь массив из 10 чисел, записываешь туда нули Не пойдет... по одно простой причине ![]() Есть вероятность, что все числа отрицательные ![]() Закидывать надо не нули, а 1е число из проверяемых! |
|
Сообщ.
#4
,
|
|
|
|
Цитата Black_Star, 05.09.03, 20:55:35 Есть вероятность, что все числа отрицательные ![]() Цитата Rembo99, 05.09.03, 14:06:45 Есть массив больше 2000 положительных чисел. ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D |
|
Сообщ.
#5
,
|
|
|
|
Sorry невнимательно прочитал... |
|
Сообщ.
#6
,
|
|
|
|
Цитата Black_Star, 06.09.03, 02:56:47 Sorry невнимательно прочитал...твоя невнимательность куда более велика, чем ты думаешь. алгоритм-то неправильный! число надо записывать не просто на место любого числа, его меньшего, а на место наименьшего из 10ти чисел, иначе получится глупость. |
|
Сообщ.
#7
,
|
|
|
|
Цитата wormball, 08.09.03, 15:25:44 число надо записывать не просто на место любого числа, его меньшего, а на место наименьшего из 10ти чисел. Медленно, но верно движемся в сторону сортировки |
|
Сообщ.
#8
,
|
|
|
|
да, но сортировать большой массив не имеет смысла, ведь тогда будет сложность n ln n, а так сложность просто n. можно, конечно, рассортировать маленький массив, а потом старательно поддерживать его в отсортированном состоянии, но я думаю, что так будет ничуть не быстрее.
|
|
Сообщ.
#9
,
|
|
|
|
И так правильный ответ О(п).
1) порядковые статистики алгоритм который позволяет найти любой порядковый эл-т (мин-й или втор-й мин-й или средний и т.п) за О(п) 2) Применить в цикле 10 раз ВСе |
|
Сообщ.
#10
,
|
|
|
|
повремени также (в смысле считаться будет за такое же время)
|
|
Сообщ.
#11
,
|
|
|
|
Цитата твоя невнимательность куда более велика, чем ты думаешь Плохой ты |
|
Сообщ.
#12
,
|
|
|
|
А заполнить маленький массив просто...
S(2000) M(10) X:=1:X2:=1 m(x):=max(s(i)) x:=x+x2 if x>9 or x<2 then x2:=-x2 и т.д... В вопросе нет указаний, чтобы они шли в порядке возрастания... |
|
Сообщ.
#13
,
|
|
|
|
Вот еще решение
1) строим кучу 0(п) 2) удаляем 10 раз макс-элемент 0(лог(п)) ------------- 0(п) и замечу не нужна дополнительная память |
|
Сообщ.
#14
,
|
|
|
|
Начинаем сортировку вставками и завершаем после 1 прохода
|
|
Сообщ.
#15
,
|
|
|
|
Цитата Trurl, 10.09.03, 16:44:04 Начинаем сортировку вставками и завершаем после 1 прохода какой проход в сортировке ставками и почему после первого и какова сложность и кажись не правильно |