introsort - 数组排序算法 - MetaTrader 5 库
//+------------------------------------------------------------------+ //| 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小时后评论,即可解锁附件下载
立即登录
