sSortTest - MetaTrader 5脚本
- 显示:
- 1865
- 等级:
- 已发布:
- 2014.01.28 07:09
- 已更新:
- 2016.11.22 07:33
- 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
该脚本包含对 double[] 数组进行排序的几种排序方法:
- 冒泡排序;
- 选择排序;
- 插入排序;
- 希尔排序;
- 霍尔快速排序;
- 排序使用 ArrayMinimum() 和 ArrayMaximum() 函数。
这里有 2 个函数 - 升序 (上) 和降序 (下) 排序:
- SortBubbleUp(double & aAr[]);
- SortBubbleDn(double & aAr[]);
- SortSelectUp(double & aAr[]);
- SortSelectDn(double & aAr[]);
- SortInsertUp(double & aAr[]);
- SortInsertDn(double & aAr[]);
- SortShellUp(double & aAr[]);
- SortShellDn(double & aAr[]);
- SortHoareUp(double & aAr[]);
- SortHoareDn(double & aAr[]);
- SortSelectUpFst(double & aAr[]);
- SortSelectDnFst(double & aAr[]).
该脚本有几个 辅助函数:
- Check(double & aAr[]) - 检查数组是否已排序 (升序)。如果数组未排序, 输出 "错误"。
- ArrayAlertR(double & aAr[],int aDigits=0,string aHeader="") - 输出数组作为线。参数: double & aAr[] - 数组输出, int aDigits - 精度 (数位), string aHeader - 在行的开头附加字符串。该函数可以用来检查数组在排序期间的变化。
- ArrayAlertC(double & aAr[],int aDigits=0,string aHeader="") - 输出数组作为柱线。参数: double & aAr[] - 数组输出, int aDigits - 精度 (数位), 数组的推导值, string aHeader - 在行的开头附加字符串。
排序算法的性能:
- 霍尔快速 - 8 ms;
- 希尔 - 78 ms;
- 快速选择 - 126 ms;
- 选择 - 582 ms;
- 插入 - 702 ms;
- 冒泡 - 1558 ms;
图例. 1. 排序算法性能
最快速的排序方法是霍尔快速排序 (快速排序), 但它的递归需要谨慎使用。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/904