Сортировка и вывод данных. - страница 2

 
Nauris Zukas:

Вы не поняли меня, будет больше переменные - Deviation,  SL, Trail, TimeStep, TP. Я здесь не правильно их назвал индексами может по этому такая путаница. Для каждого из них будет функция for и тогда получается более чем четырехмерные массив.


Как вариант - использовать структуру:

struct Table
{
   double fDeviation;
   double fSL;
   double fTrail;
   double fTP;
   datetime dtTimeStep;
}

а уже ее запихнуть в массив. Тогда количество столбцов не имеет значения. Массив же получится вообще одномерным. А для сортировки использовать двумерный массив.

 
Ihor Herasko:

Как вариант - использовать структуру:

а уже ее запихнуть в массив. Тогда количество столбцов не имеет значения. Массив же получится вообще одномерным. А для сортировки использовать двумерный массив.

Понял идею, спасибо, завтра попробую сделать.

 
Ihor Herasko:

Как вариант - использовать структуру:

а уже ее запихнуть в массив. Тогда количество столбцов не имеет значения. Массив же получится вообще одномерным. А для сортировки использовать двумерный массив.


Да и массив структур легко отсортировать.
Берём любую сортировку "быструю" или "пузырьком" - и сортируем как нужно по любому элементу.

 
Taras Slobodyanik:

Да и массив структур легко отсортировать.
Берём любую сортировку "быструю" или "пузырьком" - и сортируем как нужно по любому элементу.

С утра голова лучше работает и я вот задумался сколько займет "быстрая" или "пузырьковая" сортировка по времени например 100К или 1000К данных?
Пока сделал такой простои вариант, потом посмотрю на что мой компьютер способен если сделать полную сортировку.

double chekresults1=-1000000;
string Results[];
int countOptimRows=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void VirtualOptimization()
  {
   for(int i=StartOrderDevi; i<EndOrderDevi; i+=OrderDeviStep)
     {
      for(int i1=StartSL; i1<EndSL; i1+=SLStep)
        {
         double results1=StatisticInputs(i,i1);

         if(chekresults1<results1)
           {
            countOptimRows++;
            ArrayResize(Results,countOptimRows);
            chekresults1=results1;
            Results[countOptimRows-1]=StringConcatenate(DoubleToStr(results1,0)," Order Deviation= ",IntegerToString(i)," points, Order SL= ",IntegerToString(i1));
           }

        }
     }
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

Задача отсортировывать по "Result" начиная с самого большого и выводить с помощи  Print в журнал, но в то же время надо сохранить индексы (Deviation и SL). Если была проста сортировка то можно было-бы записать "Result" в массив и отсортировывать с ArraySort но нужно еще видеть индексы (Deviation и SL). Есть предложение как это сделать?


Все уже 1000 раз решено. Поиск в помощь. Вот тема где делается решение с аналогичным заданием: https://www.mql5.com/ru/forum/42036

Taras Slobodyanik:

Да и массив структур легко отсортировать.
Берём любую сортировку "быструю" или "пузырьком" - и сортируем как нужно по любому элементу.

Писать свой велосипед 1001 раз? - Смешно. Пользуйтесь готовыми решениями.


Nauris Zukas:

С утра голова лучше работает и я вот задумался сколько займет "быстрая" или "пузырьковая" сортировка по времени например 100К или 1000К данных?
Пока сделал такой простои вариант, потом посмотрю на что мой компьютер способен если сделать полную сортировку.

Нечего тут думать. Сложность быстрой сортировки NLogN. Точка.
 
Vasiliy Sokolov:

Все уже 1000 раз решено. Поиск в помощь. Вот тема где делается решение с аналогичным заданием: https://www.mql5.com/ru/forum/42036

Писать свой велосипед 1001 раз? - Смешно. Пользуйтесь готовыми решениями.


Нечего тут думать. Сложность быстрой сортировки NLogN. Точка.

Спасибо, посмотрю.

 

Писать свой велосипед 1001 раз? - Смешно. Пользуйтесь готовыми решениями.

какой велосипед?
берёте любой код на с++ и правите под свои нужды

 

По-моему, автор вопроса не очень чувствует разницу между критерием сортировки и размерностью массивов. Может, будет лучше назвать вещи своими именами. В программах употребляют слово "сортировка" в смысле упорядочивания. На птицефабрике куриные яйца сортируют в общечеловеческом смысле этого слова, отделяя 1-ю категорию от 3-й. То есть присваивают каждому яйцу значение признака "номер категории".

Автора, думаю, интересует именно упорядочивание. Так станет понятнее, что упорядочить можно лишь по одному критерию. То есть изменить порядок в одномерном массиве, списке. Вычисление критерия, который может быть и сложным, и зависеть от многих полей в структуре - другой вопрос. Но функции, доступные в MQL, умеют сортировать лишь по одному критерию. Это природа задачи упорядочивания, сравнивать, что больше, а что меньше, можно числа и коды символов. Пару чисел сравнить с другой парой чисел уже не так просто, нужно придумать критерий сравнения. В задачах программной сортировки он подразумевается простой, естественный: алфавитный порядок, убывание числа.

 
Vladimir:

По-моему, автор вопроса не очень чувствует разницу между критерием сортировки и размерностью массивов. Может, будет лучше назвать вещи своими именами. В программах употребляют слово "сортировка" в смысле упорядочивания. На птицефабрике куриные яйца сортируют в общечеловеческом смысле этого слова, отделяя 1-ю категорию от 3-й. То есть присваивают каждому яйцу значение признака "номер категории".

Автора, думаю, интересует именно упорядочивание. Так станет понятнее, что упорядочить можно лишь по одному критерию. То есть изменить порядок в одномерном массиве, списке. Вычисление критерия, который может быть и сложным, и зависеть от многих полей в структуре - другой вопрос. Но функции, доступные в MQL, умеют сортировать лишь по одному критерию. Это природа задачи упорядочивания, сравнивать, что больше, а что меньше, можно числа и коды символов. Пару чисел сравнить с другой парой чисел уже не так просто, нужно придумать критерий сравнения. В задачах программной сортировки он подразумевается простой, естественный: алфавитный порядок, убывание числа.

У меня только один критерий сортировки - "Result", остальное вторично что можно переписать в string. Поэтому как раз эта тема для меня (даже не знаю как я это пропустил, когда искал, перед созданием этого топика).

 
Nauris Zukas:

У меня только один критерий сортировки - "Result", остальное вторично что можно переписать в string. Поэтому как раз эта тема для меня (даже не знаю как я это пропустил, когда искал, перед созданием этого топика).

Если поместить ключевую информацию в начало строки - сортировать придется одномерный массив
Причина обращения: