Форум программистов, компьютерный форум CyberForum.ru

Поиск максимума - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
TigerSHARC
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 24
04.03.2010, 20:11     Поиск максимума #1
Помогите пожалуйста в следующем вопросе.

Имеется массив данных. Известно, что в массиве имеются локальные максимумы, и глобальные.
Как можно найти номер максимального элемента из массива?
Проблеме в том, что массив представлен периодичными данными, в которые могут входить локальные максимумы.
Например { 1, 2, 3, 2, 5, 6, 17, 3, 2, 1, -3, -1, 2, 4, 5, 20, 3, 2, 1, 0} здесь третий элемент - это локальный максимум (а седьмой и шестнадцатый элементы - искомые максимумы)
Наличие же локальных максимумов усложняет конструкцию и делает невозможным применение (как критерия максимума) простого сравнения со следующим значением.
Думаю нужно как-то использовать информацию о том, что искомые максимумы - самые большие значения в массиве.

очень нужен совет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2010, 20:11     Поиск максимума
Посмотрите здесь:

C++ Функции. Поиск минимума и максимума.
Поиск максимума в строках матрицы C++
C++ Поиск максимума и минимума
Получение максимума C++
C++ Поиск максимума в массиве
C++ поиск максимума в двумерном массиве, где ошибка
Задача на поиск максимума C++
C++ Поиск максимума в массиве

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
04.03.2010, 20:34     Поиск максимума #2
Для нахождения максимумов зачастую есть дополнительные свойства.
Например минимальное расстояние от максимума до максимума, ширина поля, для поиска максимума, а так же грань максимума.(Threshold).

Вот пример поиска максимума, используя threshold.
Само по себе это значение максимального прыжка ф-ции. Тоесть, если элемент массива с индексом i
больше элемента массива с индексом i-1 и одновременно больше элемента массива с индексом i+1 - это максимум. i-1 и i+1 - это ширина поля, для поиска максимума. В Вашем случае его можно оставить равным 1.
Вот Ваш пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//---------------------------------------------------------------------------
 
 
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
    int Threshold = 3;
    int Array[]={ 1,2,3,2,5,6,17,3,2,1,-3,-1,2,4,5,20,3,2,1,0};
        int EllementsAmount=sizeof(Array)/sizeof(int);
 
        for(int i=1;i<EllementsAmount-1;i++)
            if(abs(Array[i]-Array[i-1])>Threshold&&abs(Array[i]-Array[i+1])>Threshold)
                    printf("Founded maximum: %d\n", i+1);
 
        getch();
 
    return 0;
}
//---------------------------------------------------------------------------
TigerSHARC
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 24
04.03.2010, 21:09  [ТС]     Поиск максимума #3
Этот приме на самом деле просто для того что бы показать суть задачи.

На самом деле задача усложнена тем, что данные в массиве - это оцифрованая синусоида. И нужно найти выборку соответствующую максимуму синусоиды. Синусоида содержит шум. И так как она не обязательно скакнёт сильно в искомом максимуме то искомое значение не обязательно так сильно отличается от соседних.
И тогда выходит что критерии для поиска искомых и отсеивания локальных максимумов просто совпадут.

проблема((
Yandex
Объявления
04.03.2010, 21:09     Поиск максимума
Ответ Создать тему
Опции темы

Текущее время: 12:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru