Expert Advisors • Indicators • Scripts • Libraries

MQL.RobotFX.org is the biggest collection of MetaTrader expert advisors (MT5 & MT4), indicators, scripts and libraries that can be used to improve trading results, minimize risks or simply automate trading tasks

MetaTrader 5 Libraries | introsort - array sorting algorithm

MetaTrader Experts, Indicators, Scripts and Libraries
//+------------------------------------------------------------------+  //|                                                    Introsort.mq5 |  //|                                    2019-2021, dimitri pecheritsa |  //|                                         mql5.com/en/users/dmipec |  //|------------------------------------------------------------------|  //|   c| array sorting algorithm                                     |  //|  introsort or introspective sort is a hybrid sorting algorithm   |  //|that provides both fast average performance and (asymptotically)  |  //|optimal worst-case performance. it begins with quicksort, it      |  //|switches to heapsort when the recursion depth exceeds a level     |  //|based on (the logarithm of) the number of elements being sorted   |  //|and it switches to insertion sort when the number of elements is  |  //|below some threshold. this combines the good parts of the three   |  //|algorithms, with practical performance comparable to quicksort on |  //|typical data sets and worst-case o(n log n) runtime due to the    |  //|heap sort. since the three algorithms it uses are comparison      |  //|sorts, it is also a comparison sort.                              |  //|  introsort was invented by david musser in 1997, in which he also|  //|introduced introselect, a hybrid selection algorithm based on     |  //|quickselect (a variant of quicksort), which falls back to median  |  //|of medians and thus provides worst-case linear complexity, which  |  //|is optimal. both algorithms were introduced with the purpose of   |  //|providing generic algorithms for the c++ standard library which   |  //|had both fast average performance and optimal worst-case          |  //|performance, thus allowing the performance requirements to be     |  //|tightened. introsort is in place and not stable                   |  //|  the most popular c++ stl algorithm sort() uses introsort.       |  //|------------------------------------------------------------------|  //| scr| introsort example                                           |  //+------------------------------------------------------------------+  #include <Mqh\Algorithms\SortIntro\Introsort.mqh>  #include <Mqh\Algorithms\SortIntro\Functions.mqh>  void OnStart()    {     int a[] = {3, 1, 23, -9, 233, 23, -313, 32, -9};     ArraySort(a,new CIntroSort<int,int>,SORT_ORDER_ACCENDING);     ArrayPrint(a);    }  //+------------------------------------------------------------------+  //| >>>| -313   -9   -9    1    3   23   23   32  233                |  //+------------------------------------------------------------------+  
33475