找回密码
 加入
搜索
查看: 1938|回复: 3

[AU3基础] 二维数组如何排序

[复制链接]
发表于 2019-3-7 07:37:04 | 显示全部楼层 |阅读模式
本帖最后由 dnvplj 于 2019-3-7 08:27 编辑

请问各位朋友,二维数组如何排序,见下图和代码。
#include <Array.au3>

Local $Array = _Twoarray()
_Aftersorting($Array)

;原数组
Func _Twoarray()
        
        Local $Array[5][4] = [ _
                        [20, 21, 22, 23], _
                        [24, 25, 26, 27], _
                        [28, 29, 30, 31], _
                        [32, 33, 34, 35], _
                        [36, 37, 38, 39]]

        Return $Array
EndFunc   ;==>_Twoarray

;排序后
Func _Aftersorting($Array)
        
        _ArrayDisplay($Array, "$Array")
EndFunc   ;==>_Aftersorting

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2019-3-7 18:09:27 | 显示全部楼层
#include <Array.au3>

Local $Array = _Twoarray()
_ArrayDisplay($Array, "排序前")
_Aftersorting($Array)
_ArrayDisplay($Array, "排序后")


;原数组
Func _Twoarray()

        Local $Array[5][4] = [ _
                        [21, 20, 2, 5], _
                        [24, 25, 26, 27], _
                        [28, 29, 30, 31], _
                        [32, 33, 34, 35], _
                        [36, 37, 38, 39]]

        Return $Array
EndFunc   ;==>_Twoarray

;排序
Func _Aftersorting(ByRef $Array)
        If Not IsArray($Array) Then Return SetError(1)
        Local $aRet[0]
        For $i = 0 To UBound($Array) - 1
                For $j = 0 To UBound($Array, 2) - 1
                        ReDim $aRet[UBound($aRet) + 1]
                        $aRet[UBound($aRet) - 1] = $Array[$i][$j]
                Next
        Next
        
        Local $i_ub = UBound($aRet)
        For $i_count = 0 To $i_ub - 2
                Local $i_se = $i_count
                For $x_count = $i_count To $i_ub - 1
                        If Number($aRet[$i_se]) > Number($aRet[$x_count]) Then $i_se = $x_count
                Next
                Local $i_hld = $aRet[$i_count]
                $aRet[$i_count] = $aRet[$i_se]
                $aRet[$i_se] = $i_hld
        Next

        $i_count = 0
        For $i = 0 To UBound($Array,2) - 1
                For $j = 0 To UBound($Array) - 1
                        $Array[$j][$i] = $aRet[$i_count]
                        $i_count += 1
                Next
        Next
        ReDim $aRet[0]
EndFunc   ;==>_Aftersorting



评分

参与人数 1金钱 +28 收起 理由
dnvplj + 28 很给力!

查看全部评分

 楼主| 发表于 2019-3-7 19:22:26 | 显示全部楼层

谢谢朋友,问题解决了。
发表于 2019-10-17 20:56:35 | 显示全部楼层
厉害,学习啦
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 17:31 , Processed in 0.078885 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表