欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

introsort - 数组排序算法 - MetaTrader 5 库

author emer | 439 人阅读 | 0 人评论 |
//+------------------------------------------------------------------+
//|                                                    Introsort.mq5 |
//|                                    2019-2021,迪米特里·佩切里察 |
//|                                         mql5.com/en/users/dmipec | mql5.com/en/users/dmipec |
//|------------------------------------------------------------------|
//|   c|数组排序算法                                    |
//|  introsort 或内省排序是一种混合排序算法 |
//|既提供快速的平均性能又(渐进地)  |
//|最坏情况下的最佳性能。它从快速排序开始,它       |
//|当递归深度超过某个级别时切换到堆排序     |
//|基于正在排序的元素数量(的对数) |
//|当元素数量为  | 时,它会切换到插入排序
//|低于某个阈值。这结合了三者的优点 |
//|算法,实用性能堪比|上的快速排序
//|由于    | 导致的典型数据集和最坏情况 o(n log n) 运行时间
//|堆排序。因为它使用的三种算法是比较      |
//|排序,也是比较排序。                              |
//|  introsort 是由 david musser 于 1997 年发明的,他还在其中|
//|引入了introselect,一种基于     | 的混合选择算法
//|quickselect(快速排序的变体),回落到中位数 |
//|中位数,从而提供最坏情况的线性复杂度,这  |
//|是最佳的。引入这两种算法的目的是 |
//|为 C++ 标准库提供通用算法
//|同时具有快速的平均性能和最佳的最坏情况          |
//|性能,从而使性能要求为     |
//|收紧。 introsort 已到位,但不稳定                   |
//|  最流行的 c++ stl 算法 sort() 使用 introsort。       |
//|------------------------------------------------------------------|
//| SCR|内部排序示例                                          |
//+------------------------------------------------------------------+
#包括#包括空白 启动时()
  {
  整数一个[] = {3,1,23, -9,233,23, -313,32, -9};
  数组排序(一个,新的CIntroSort<整数,整数>,SORT_ORDER_ACCENDING);
  阵列打印(一个);
  }//+------------------------------------------------------------------+
//| >>>| -313   -9   -9    1    3   23   23   32  233                |
//+------------------------------------------------------------------+



附件下载

📎 introsort.mq5 (0.96 KB)

📎 introsort.mqh (26.5 KB)

📎 functions.mqh (1.94 KB)

📎 asorter.mqh (2.18 KB)

📎 comparefunction.mqh (10.95 KB)

Source: MQL5 #33475

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录