| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Определить максимальный элемент массива |
| Автор: BftS 25.11.2009, 19:09 | ||
| Как можно определить позицию максимального элемента массива? Элементы - целые числа, могут быть отрицательными.
Как бы все просто. Но. Если до этого максимально знаечение определялось, мы должны выбрать следующее за ним наибольшее значение Т.е. если массив 0,1,2 , то в первый раз мы получаем 2, потом 1, а потом 0. По идеи все тоже легко, просто добавить в if условие M[i]<LAST_MAX Но, как мы получим изначально LAST_MAX. Оно должно быть необычайно огромным, что бы не обрезать ни один элемент. Вроде звучить легко, но добиться от себя решения не могу... |
| Автор: Abyx 25.11.2009, 19:41 | ||
|
| Автор: BftS 25.11.2009, 19:51 | ||||
А что будет, если первый элемент больше третьего ? )) |
| Автор: Abyx 25.11.2009, 19:52 |
| BftS, тогда он максимальный %) |
| Автор: powerfox 25.11.2009, 19:55 |
Зачем лишняя переменная, если индекс и так сохраняем? |
| Автор: Abyx 25.11.2009, 19:58 | ||
| powerfox, так оптимальнее. Добавлено через 7 минут и 1 секунду вообще, надо наверное написать как-то так
Добавлено через 11 минут и 37 секунд лишняя - в смысле объема исходного кода? |
| Автор: mes 25.11.2009, 20:12 | ||
нет.. в смысле ухудшения читабельности и нагружения логики.. Добавлено @ 20:15 имхо, тогда надо довести идею с "итераторами" до конца :
|
| Автор: unicuum 27.11.2009, 12:06 | ||||
Монстр какой-то получается
Вывод:
|
| Автор: Earnest 27.11.2009, 18:55 |
| Если нужно последовательно получать максимальные значения, еще не использовавшиеся, то не проще ли один раз отсортировать массив? Или отсортировать индексы, если трогать сам массив нельзя. Общая производительность будет выше (т.к. вместо последовательный линийных поисков мы можем один раз сделать квик-сорт и свести дело к N log N)? да и как-то элегантне это... Добавлено через 1 минуту и 58 секунд Кроме того, если нужно получить не весь ряд "максимальных" значений, а только какую-то часть, можно ипользовать partial_sort. |
| Автор: unicuum 28.11.2009, 00:00 | ||
Для задачи автора топика так и надо делать. То есть задача сначала сформулирована в получении одного наибольшего элемента. Но внизу есть пояснение, что на самом деле надо получать индексы массива в порядке убывания значений на которые они ссылаются. |