MetaTrader 5 / Kütüphaneler

gnome sort - array sorting algorithm - MetaTrader 5 için kütüphane

4320
(13)
//+------------------------------------------------------------------+ //|                                                    GnomeSort.mq5 | //|                                    2019-2021, dimitri pecheritsa | //|                                         mql5.com/en/users/dmipec | //|------------------------------------------------------------------| //|  c  | gnome sort                                                 | //|------------------------------------------------------------------| //| use | array sorting algorithm                                    | //|  best: n; average: n^2; worst: n^2                               | //|  memory: 1; stable: yes; method: exchanging                      | //|  note: tiny code size                                            | //|  originally proposed by iranian computer scientist hamid         | //|sarbazi-azad (professor of computer science and engineering at    | //|sharif university of technology) in 2000. the sort was first      | //|called stupid sort (not to be confused with bogosort), and then   | //|later described by dick grune and named gnome sort.               | //|  the gnome sort is a sorting algorithm which is similar to       | //|insertion sort in that it works with one item at a time but gets  | //|the item to the proper place by a series of swaps, similar to a   | //|bubble sort. it is conceptually simple, requiring no nested loops.| //|the average running time is o(n^2) but tends towards o(n) if the  | //|list is initially almost sorted.                                  | //|  the algorithm finds the first place where two adjacent elements | //|are in the wrong order and swaps them. it takes advantage of the  | //|fact that performing a swap can introduce a new out-of-order      | //|adjacent pair next to the previously swapped elements. it does not| //|assume that elements forward of the current position are sorted,  | //|so it only needs to check the position directly previous to the   | //|swapped elements.                                                 | //|------------------------------------------------------------------| //|  f  | script program start function                              | //|------------------------------------------------------------------| //| use | gnome sort example. sort market watch symbols by spread    | //+------------------------------------------------------------------+ #include <Mqh\Algorithms\SortGnome\GnomeSort.mqh> #include <Mqh\Algorithms\SortGnome\Functions.mqh> void OnStart(void)   { //--- load symbols from the warket watch window    string symbols[];    SymbolsLoad(symbols); //--- load spreads of the symbols     int keys[];    SymbolKeysSpread(symbols,keys); //--- sort symbols by spread in accending order     ArraySort(keys,symbols,new CGnomeSort<int,string>); //--- print a table of symbols to check result    SymbolsPrint(symbols);   } //-------------------------------------------------------------------- //               symbol |   spread |    point //-------------------------------------------------------------------- //                BRENT |        6 |     0.01 //               EURUSD |       16 |    1E-05 //            .US30Cash |       16 |      0.1 //                 TSLA |       47 |     0.01 //               XAUUSD |      300 |    0.001 //               USDRUB |      672 |   0.0001 //               BTCUSD |    13833 |     0.01 //--------------------------------------------------------------------