как найти ArrayMaximum () и минимальная (), не абсолютные значения?

 
Здравствуйте.



Кто-то может помочь мне решить эту "проблему".



ArrayMinimum () и ArrayMaximum () просто возвращают соответственно индекс самым минимальным (маленьких) и самый максимум (самый большой) значение в массив, переданные ему.

Так что дать абсолютной Минимальные и максимальные значения, из массива.



Но что, если один поиск относительного минимума и максимума?Второй минимум, третий и т.д.?

Я имею в виду не маленьких или большая ценность, а второй маленький и второй больше (то есть, если большая ценность составляет 5, второй крупнее 3 и т.д.).




Как это сделать с помощью всего ArrayMaximum () / Минимальная () функции, или просто, как немногие строки кода, не поворачивая с ума 50 строк кода?



Спасибо!

PS: я не вижу никаких других *Простое* решение, чем:
- Использовать такую ​​функцию, чтобы найти абсолютное макс (или минут).
- Как только локализованные он, удаленные из массива
- Reperform поиска: потому что во-первых, макс элемент, удалены, естественно новых макс старый второй
 
Reaper:

PS: я не вижу никаких других *Простое* решение, чем:
- Использовать такую ​​функцию, чтобы найти абсолютное макс (или минут).
- Как только локализованные он, удаленные из массива
- Reperform поиска: потому что во-первых, макс элемент, удалены, естественно новых макс старый второй

вы сами себе ответили. вот так и делайте.

но можно просто отсортировать.

 
sergeev:

вы сами себе ответили. вот так и делайте.

но можно просто отсортировать.

Да, но должен быть другой путь, более простой и прямой, используя только функции, не копировать, не удалять, не сортировать ...

 
Reaper:
Да, но должен быть другой путь, более простой и прямой, используя только функции, не копировать, не удалять, не сортировать ...

можете еще запоминать в параллельный массив.
 
может просто отсортировать ? на мой взгляд это будет проще.
 
sergeev:
можете еще запоминать в параллельный массив.
Я даже не могу найти практическое решение этой проблемы.

Идея заключается в выборе второй по величине элемента, а не первого. Это основная функция и простой, но не понимаю, потому что он требует так много операций с массивами.
Я уверен, что вы можете сделать только с ArrayMaximum() и только две строки кода, но я не могу найти правильную комбинацию.

ArraySort() .. исключено, я знаю, что такой подход, но именно поэтому этой теме появился на свет.

Может быть, я мог бы попробовать удалить наибольший элемент, а также выполнять поиск, и как говорилось выше, новый элемент будет больше, на самом деле во-вторых, потому что первый был отменен.

Но даже здесь я считаю, хороший код решение.

Я пытаюсь использовать ArrayBsearch() для этой цели, но игнорируя мой код и в области алгоритмов по-прежнему много, я заранее приношу извинения.

Если у вас есть решение .. Я рад его видеть.

Спасибо!
Документация по MQL5: Операции с массивами / ArrayBsearch
Документация по MQL5: Операции с массивами / ArrayBsearch
  • www.mql5.com
Операции с массивами / ArrayBsearch - Документация по MQL5
 
DKeN:
может просто отсортировать ? на мой взгляд это будет проще.
Я не хочу заказать с ArraySort().
Слишком кода.
Это не так просто, как вы думаете, хоть это может показаться.

Я хочу использовать ArrayMaximum() рекурсивно, так что первый входящий звонок, самый важный фактор, безусловно, и я хочу шанс сделать второй вызов, что исключает первый, второй курс второго элемента. Но я не вижу возможности это сделать.
Документация по MQL5: Операции с массивами / ArrayMaximum
Документация по MQL5: Операции с массивами / ArrayMaximum
  • www.mql5.com
Операции с массивами / ArrayMaximum - Документация по MQL5
 
Reaper:
Я даже не могу найти практическое решение этой проблемы.

Идея заключается в выборе второй по величине элемента, а не первого. Это основная функция и простой, но не понимаю, потому что он требует так много операций с массивами.
Я уверен, что вы можете сделать только с ArrayMaximum() и только две строки кода, но я не могу найти правильную комбинацию.

ArraySort() .. исключено, я знаю, что такой подход, но именно поэтому этой теме появился на свет.

Может быть, я мог бы попробовать удалить наибольший элемент, а также выполнять поиск, и как говорилось выше, новый элемент будет больше, на самом деле во-вторых, потому что первый был отменен.

Но даже здесь я считаю, хороший код решение.

Я пытаюсь использовать ArrayBsearch() для этой цели, но игнорируя мой код и в области алгоритмов по-прежнему много, я заранее приношу извинения.

Если у вас есть решение .. Я рад его видеть.

Спасибо!

у меня 17 строк в функции, которая выполняет поиск элемента с заданным уровнем максимализма, у кого меньше?

этой же функцией можно  искать минимум с заданным уровнем 

Файлы:
fnd.mq5  2 kb
 

Приветы! У меня так получилось найти второй(к уменьшению) максимум.

int i=ArrayMaximum(massiv,0,WHOLE_ARRAY); //ищем индекс с максимум
double tt=massiv[i];                      //сохраняем в промежуточную переменную значение
massiv[i]=-1*DBL_MAX;                     //присваеваем минимальное значение
int i2=ArrayMaximum(massiv,0,WHOLE_ARRAY);     //определяем новый максимум(второй будет)
Print (massiv[i2]);
massiv[i]=tt;                             //возвращаем в массив по измененному индексу значение ,если надо

 

 
Karlson:

Приветы! У меня так получилось найти второй(к уменьшению) максимум.

 

так нечестно. Вы портите содержимое массива - вдруг это таймсерия?.
 
gdtt:
Вы портите содержимое массива - вдруг это таймсерия?.

Разве речь шла о таймсериях? (Может, я что-то и пропустил).

И ничего он не "портит". Сначала запоминает tt=massiv[i], затем возвращает massiv[i]=tt. 

Причина обращения: