Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Быстрая сортировка. - библиотека для MetaTrader 5

Просмотров:
1028
Рейтинг:
(10)
Опубликован:
2021.12.07 03:35
Обновлен:
2023.02.01 08:25
\MQL5\Include\ \MQL5\Scripts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Алгоритм быстрой сортировки для массивов и динамического массива CArrayObj из стандартной библиотеки,

а также для сортировки векторов.

В отличие от  ArraySort, может сортировать строки, а также использовать различные условия сортировки.

template< typename T >
void QuickSort( T& array[] );

   T      -  Встроенный тип или любой тип, для которого определён operator<().

   array  -  Статический или динамический массив.


template< typename T, typename FuncType >
void QuickSort( T& array[], FuncType func );

   T      -  Любой тип.

   array  -  Статический или динамический массив.

   func   -  Функция сравнения элементов массива вида:  bool func( const T& left, const T& right );

                Возвращает true если левый элемент меньше правого.


template< typename T, typename FuncType >
void QuickSort( T& array[], FuncType func, int first, int last );

   T      -  Любой тип.

   array  -  Статический или динамический массив.

   func   -  Функция сравнения элементов массива вида:  bool func( const T& left, const T& right );

                Возвращает true если левый элемент меньше правого.

   first  -  Индекс первого элемента на участке сортировки.

   last   -  Индекс последнего элемента на участке сортировки.


void QuickSort( CArrayObj& array );

   array  -  Массив указателей на экземпляры класса CObject и его наследников.

                Для элементов массива должна быть определена функция Compare().


template< typename FuncType >
void QuickSort( CArrayObj& array, FuncType func );

   array  -  Массив указателей на экземпляры класса CObject и его наследников.

   func   -  Функция сравнения элементов массива вида:  bool func( const CObject* left, const CObject* right );

                Возвращает true если левый элемент меньше правого.


template< typename FuncType >
void QuickSort( CArrayObj& array, FuncType func, int first, int last );

   array  -  Массив указателей на экземпляры класса CObject и его наследников.

   func   -  Функция сравнения элементов массива вида:  bool func( const CObject* left, const CObject* right );

                Возвращает true если левый элемент меньше правого.

   first  -  Индекс первого элемента на участке сортировки.

   last   -  Индекс последнего элемента на участке сортировки.


void QuickSort( vector< double >& v );
void QuickSort( vector< float >& v );
void QuickSort( vector& v );
void QuickSort( vectorf& v );

   v   -   vector< double > или vector< float >.


Пример демонстрирующий сортировку структур:

#include <QuickSort.mqh>

struct MyStruct
{
   double A;
   double B;
   double C;
};

typedef bool (*FuncLess)( const MyStruct&, const MyStruct& );

bool Less( const MyStruct& struct1, const MyStruct& struct2 )
{
   if( struct1.A != struct2.A ){
      return struct1.A < struct2.A;
   }
   if( struct1.B != struct2.B ){
      return struct1.B < struct2.B;
   }
   return struct1.C < struct2.C;
}

void OnStart()
{
   MyStruct structArray[];
   ArrayResize( structArray, 25 );

   for( int i = 0; i < 25; i++ ){
      structArray[i].A = rand();
      structArray[i].B = rand();
      structArray[i].C = rand();
   }

   QuickSort< MyStruct, FuncLess >( structArray, Less );

   for( int i = 0; i < 25; i++ )
   {
      PrintFormat( "structArray[%i] = %f %f %f", i, structArray[i].A, structArray[i].B, structArray[i].C );
   }
} 
    Force Arrow Chart Alert Force Arrow Chart Alert

    Сигнальный индикатор iForce (Force Index, FRC). При появлении сигнала индикатор сигнализирует различными способами

    Trailing Highest and Lowest position Net Price Trailing Highest and Lowest position Net Price

    Советник-утилита: ищет по текущему символу максимальную и минимальную позицию (заданного типа) и проводит трейлинг выбранных позиций по неттинговой цене

    Renko Level Subwindow Renko Level Subwindow

    Индикатор отображает ренко-бары в подокне

    N last bars OBJ_CHART 2 N last bars OBJ_CHART 2

    Версия 2. По умолчанию символ текущий, а также ширина и высота графика. При желании можно задать ширину, высоту и символ