arr := [["张三","18岁","100斤"] , ["李四","19岁","110斤"] , ["王五","3岁","40斤"]] ; MsgBox的输出方式需要优化成函数 排序1 := storarr(arr, 1), 排序2 := storarr(arr, 2), 排序3 := storarr(arr, 3) ; 排序1 按首字母拼音排序,排序2和3 按数字大小排序 MsgBox % 排序1[1][1] "`n" 排序1[1][2] "`n" 排序1[1][3] "`n`n" 排序1[2][1] "`n" 排序1[2][2] "`n" 排序1[2][3] "`n`n" 排序1[3][1] "`n" 排序1[3][2] "`n" 排序1[3][3] storarr(Inarr, l := 1, s := "N"){ lsArr := [] Outarr := [] for k,v in Inarr { lsArr[v[l]] := v lsstr .= v[l] "`n" } Sort, lsstr, % s lsstr := Trim(lsstr,"`n") lssz := StrSplit(lsstr, "`n") For i,n in lssz Outarr.Push(lsArr[n]) Return Outarr } ; 数组排序 By Tebayaki 【根据第二个数据来排序】 ; 原例子使用的数组 arr := [["a", "17y"] , ["b", "20y"] , ["d", "20y"] , ["c", "15y"]] arr := [["张三","18岁","100斤"] , ["李四","19岁"] , ["张三","3岁","40斤"]] 排序1 := BubbleSort(arr) ; 排序1 按首字母拼音排序,排序2和3 按数字大小排序 MsgBox % 排序1[1][1] "`n" 排序1[1][2] "`n" 排序1[1][3] "`n`n" 排序1[2][1] "`n" 排序1[2][2] "`n" 排序1[2][3] "`n`n" 排序1[3][1] "`n" 排序1[3][2] "`n" 排序1[3][3] ; MsgBox % BubbleSort(arr)[1][1] BubbleSort(arr){ loop % arr.Length() - 1 loop % arr.Length() - A_Index if (StrCompare(arr[A_Index][2], arr[A_Index + 1][2]) > 2) buf := arr[A_Index], arr[A_Index] := arr[A_Index + 1], arr[A_Index + 1] := buf return arr } StrCompare(s1, s2){ return DllCall("CompareStringW", "uint", 0, "uint", 8, "str", s1, "int", StrLen(s1), "str", s2, "int", StrLen(s2)) }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)