仙居人家
我来了。
级别: 网络英雄
精华主题: 2 篇
发帖数量: 735 个
工控威望: 5416 点
下载积分: 22773 分
在线时间: 1344(小时)
注册时间: 2016-06-08
最后登录: 2024-04-30
查看仙居人家的 主题 / 回贴
楼主  发表于: 2023-02-02 13:06
程序里写的是自己用从小到大排序的。
如果要从大到小也很简单,自己改一下比较指令就行。
管理员看见了,记的加精,程序写有注释,大家都能看懂。
[ 此帖被仙居人家在2023-02-02 15:53重新编辑 ]
附件: 比较大小排序,从小到大排队.zip (448 K) 下载次数:1656
网站提示: 请不要用迅雷下载附件,容易出错
本帖最近评分记录:
  • 下载积分:+5(jiangwei) 真诚感谢!
  • 下载积分:+5(langui) 热心助人!
  • 下载积分:+1(智趣黄sir) 感谢分享!
  • 下载积分:+1(菜鸟至尊.) 感谢分享!
  • 下载积分:+1(小许爱玩plc) 感谢分享!
  • 下载积分:+5(小明同学233) 热心助人!
  • 下载积分:+3(zq123666) 感谢分享!
  • 永无止境 !@#$%^&*
    天下风云出我辈,一入江湖岁月催。
    皇图霸业谈笑中,不胜人间一场醉。
    提剑跨骑挥鬼雨,白骨如山鸟惊飞。
    尘事如潮人如水,只叹江湖几人回。
    发照片
    问题少年
    级别: 略有小成
    精华主题: 0
    发帖数量: 213 个
    工控威望: 304 点
    下载积分: 1533 分
    在线时间: 68(小时)
    注册时间: 2020-07-12
    最后登录: 2024-04-20
    查看发照片的 主题 / 回贴
    1楼  发表于: 2023-04-30 15:40
    那如果100个数值对应地址,要把这100个地址里的数据不变,要求数据大小排列怎么做?
    发照片
    问题少年
    级别: 略有小成
    精华主题: 0
    发帖数量: 213 个
    工控威望: 304 点
    下载积分: 1533 分
    在线时间: 68(小时)
    注册时间: 2020-07-12
    最后登录: 2024-04-20
    查看发照片的 主题 / 回贴
    2楼  发表于: 2023-09-15 15:08
    IF Enable THEN
        IF LDP(TRUE,ContentStart) THEN
            SortEnd:=FALSE;
            ZRST(TRUE,DataOut1[0],DataOut1[29]);
            ZRST(TRUE,DataOut2[0],DataOut2[29]);
            ZRST(TRUE,DataContent_Min[0],DataContent_Min[29]);
            ZRST(TRUE,DataContent_Max[0],DataContent_Max[29]);
            Data_i:=0;
            MoveEnd:=TRUE;
        END_IF;
        IF MoveEnd THEN
            FOR Data_i:=0 TO DataNumber-1 BY 1 DO
                DataContent_Min[Data_i]:=DataContent[Data_i];  
                DataContent_Max[Data_i]:=DataContent[Data_i];
            END_FOR;    
            SortStart:=TRUE;
            MoveEnd:=FALSE;
        END_IF;
        IF SortStart THEN
            DataNumber_i:=0;
            FOR DataNumber_i:=0 TO DataNumber-2 BY 1 DO  
                DataSort:=DataNumber-(DataNumber_i+1);
                FOR DataSort_i:=0 TO DataSort-1 BY 1 DO
                    IF DataContent_Min[DataNumber_i+DataSort_i+1]<=DataContent_Min[DataNumber_i] THEN
                        DataContent_N_E_Min:=DataContent_Min[DataNumber_i];
                        DataContent_S_E_Min:=DataContent_Min[DataNumber_i+DataSort_i+1];
                        DataContent_Min[DataNumber_i]:=DataContent_S_E_Min;
                        DataContent_Min[DataNumber_i+DataSort_i+1]:=DataContent_N_E_Min;
                        DataOut2[DataNumber_i]:=DataContent_S_E_Min;
                        DataOut2[DataNumber-1]:=DataContent_N_E_Min;
                    END_IF;    
                    IF DataContent_Max[DataNumber_i+DataSort_i+1]>=DataContent_Max[DataNumber_i] THEN
                        DataContent_N_E_Max:=DataContent_Max[DataNumber_i];
                        DataContent_S_E_Max:=DataContent_Max[DataNumber_i+DataSort_i+1];
                        DataContent_Max[DataNumber_i]:=DataContent_S_E_Max;
                        DataContent_Max[DataNumber_i+DataSort_i+1]:=DataContent_N_E_Max;
                        DataOut1[DataNumber_i]:=DataContent_S_E_Max;
                        DataOut1[DataNumber-1]:=DataContent_N_E_Max;
                    END_IF;    
                END_FOR;    
            END_FOR;
            SortStart:=FALSE;
            SortEnd:=TRUE;
        END_IF;
    END_IF;