![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| BftS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.10.2009 Репутация: нет Всего: нет |
Как можно определить позицию максимального элемента массива?
Элементы - целые числа, могут быть отрицательными.
Как бы все просто. Но. Если до этого максимально знаечение определялось, мы должны выбрать следующее за ним наибольшее значение Т.е. если массив 0,1,2 , то в первый раз мы получаем 2, потом 1, а потом 0. По идеи все тоже легко, просто добавить в if условие M[i]<LAST_MAX Но, как мы получим изначально LAST_MAX. Оно должно быть необычайно огромным, что бы не обрезать ни один элемент. Вроде звучить легко, но добиться от себя решения не могу... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
гораздо проще - берите значение первого (с индексом 0) элемента... Только не забывайте перед началом проверить что массив не пустой, ну и придумать как вести себя в противной ситуации. Это сообщение отредактировал(а) mes - 25.11.2009, 19:47 |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
|
|||
|
||||
| BftS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.10.2009 Репутация: нет Всего: нет |
А что будет, если первый элемент больше третьего ? )) |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
BftS, тогда он максимальный %)
|
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Зачем лишняя переменная, если индекс и так сохраняем? |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
powerfox, так оптимальнее.
Добавлено через 7 минут и 1 секунду вообще, надо наверное написать как-то так
Добавлено через 11 минут и 37 секунд лишняя - в смысле объема исходного кода? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
нет.. в смысле ухудшения читабельности и нагружения логики.. Добавлено @ 20:15 имхо, тогда надо довести идею с "итераторами" до конца :
Это сообщение отредактировал(а) mes - 25.11.2009, 20:17 |
|||
|
||||
| unicuum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
Монстр какой-то получается
Вывод:
-------------------- ![]() обычный день на винграде |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Если нужно последовательно получать максимальные значения, еще не использовавшиеся, то не проще ли один раз отсортировать массив? Или отсортировать индексы, если трогать сам массив нельзя. Общая производительность будет выше (т.к. вместо последовательный линийных поисков мы можем один раз сделать квик-сорт и свести дело к N log N)? да и как-то элегантне это...
Добавлено через 1 минуту и 58 секунд Кроме того, если нужно получить не весь ряд "максимальных" значений, а только какую-то часть, можно ипользовать partial_sort. -------------------- ... |
|||
|
||||
| unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: 1 Всего: 8 |
Для задачи автора топика так и надо делать. То есть задача сначала сформулирована в получении одного наибольшего элемента. Но внизу есть пояснение, что на самом деле надо получать индексы массива в порядке убывания значений на которые они ссылаются. -------------------- ![]() обычный день на винграде |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |