查看: 2299|回复: 3
打印 上一主题 下一主题

[公式] 程序化学习——自己写的数组排序函数和相关应用

[复制链接]
跳转到指定楼层
1
发表于 2012-11-8 10:58:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前易盛程序化中暂时没有给数值型数组元素进行自动排序的函数,自己写了一个用户函数sort函数,处理数值型数组的排序问题,支持正序排列和倒序排列。
//--------------------------------------------------------------
// 简称: sort
// 名称: 数组排序
// 类型: 用户函数
// 输出: Numeric
//--------------------------------------------------------------
Params
    NumericArray arr;    //原始数组
    NumericArrayRef arrResult;   //排序后数组
    Integer order(0);    //排序规则,0正序排列,1倒序排序
Vars
    Integer i;
    Integer j;
    Integer temp;
    Numeric Num;
Begin
   For (i=ArrLength(arr)-1;i>0;i--)
   {
         for (j=0;j<i;j++)
      {
           if (arr[j]>arr[j+1])
         {
             temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
         }
         
      }
   }
   if (order==0)
     arrResult=arr;
   Else
     arrResult=ArrRevers(arr);
   Return 1;
End




---------------------------------------------------------------

代码中应用:
Params      
    //参数定义
GlobalVars   
    //全局变量定义
Vars        
    //局部变量定义
    NumericArray Arr;
    NumericArray arr1;
   
Begin        
    //策略执行区
    arr=HisData(Enum_Data_Close,Enum_Period_Min5,"CF305",5);     //取CF305 5分钟线5个周期数据,放到数组中arr中
    sort(arr,arr1,1);     //利用用户函数sort进行倒序排序,从高到低,将结果存入到数组arr1中 。                  
    Print("五周期内收盘价最高:"+Text(arr1[0])+"   五周期内收盘价次高"+ Text(arr1[1]));  //打印结果
End






以上代码抛砖引玉,可继续对算法进行优化和改善,提高排序效率。







头像被屏蔽
2
发表于 2012-11-10 15:08:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
3
发表于 2012-11-12 16:44:45 | 只看该作者
这个 我还真看不懂  
  以前读书 天天窝在寝室玩游戏 {:soso_e105:}
4
发表于 2013-5-15 14:37:26 | 只看该作者
楼主是好人~~~
您需要登录后才可以回帖 登录 | 注册入住  

本版积分规则

易家网  ©2015-2023  郑州期米信息技术有限公司版权所有  豫公网安备 41010502005136号 豫ICP备16010300号