Сортировка массива в MQL

Алгоритм сортировки массива

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

Привожу код функции сортировки массива на MQL4 с пояснениями.

void sortMass() // объявление функции
  {
   int mass[]; // Объявляем массив
   ArrayResize(mass,10); // устанавливаем размер массива, 10 хватит

   for(int i=0; i<10;i++) // заполняем массив рандомными значениями
     {
      mass[i]=MathRand();
     }

   for(int i=0; i<10;i++) // "большой цикл"
     {
      for(int j=0; j<10;j++) // "маленький цикл"
        {
         int c; // переменная для хранения "старого" значения
         if(mass[i]>mass[j]) //  сравниваем элемент "большого" массива с каждым элементом этого же массива. Если текущий элемент больше следующего значения, то (если поставить в сравнение <, массив будет отсортирован от меньшего к большему)
           {
            c=mass[i];//запоминаем это значение
            mass[i] = mass[j]; //Присваиваем ему значение следующего значения
            mass[j] = c; // а само следующее значение меняем местами с предыдущим значением. Получается, меняем местами элементы массива в сторону уменьшения
           }
        }
     }
   string massiv; // объявляем строку
   for(int i=0; i<10;i++) // делаем цикл для составления строки
     {
      massiv+=mass[i]+" \n ";//формируем строку с уже отсортироваными значениями массива
     }
   Comment(massiv);// распечатываем результат на графике
  }

В глобальных переменных объявляем datetime mas;

Вызываем функцию в OnInit() один раз за один бар:

   if(mas!=Time[0])
     {
      sortMass();
      mas=Time[0];
     }

Получаем отсортированный массив:

Отсортированный массив

Поделись с друзьями: