找回密码
 加入
搜索
查看: 1271|回复: 2

[效率算法] [已解决] 数字字符串以降序排序

[复制链接]
发表于 2018-5-4 09:57:07 | 显示全部楼层 |阅读模式
本帖最后由 chishingchan 于 2018-5-4 16:22 编辑

之前的问题“[求助] 关于时间长度的数据排序”没有人帮上忙,
http://www.autoit3.cn/thread-56755-1-1.html

经搜索,觉得可用,略加修改,发现总是出错。
http://www.autoit3.cn/forum.php?mod=viewthread&tid=22896

请高手帮个忙,数字字符串以降序排序,谢谢!

修改后出错的源码:
#include <array.au3>

local $array[15]=["1|3","2|8","3|7","4|1","5|2","6|5","7|6","8|4","9|44","10|2","11|11","12|35","13|93","14|22","15|12"]

$timer=TimerInit()
quicksort($array,0,15)

_arraydisplay($array,TimerDiff($timer))

func quicksort(ByRef $arr,$beg=0,$end=0)
        If $End <= $beg Then Return
        If $End < 1 Or $End > UBound($arr)-1 Then $End = UBound($arr)-1
        If $beg < 0 Then $beg = 0
        If $beg > $End Then Return SetError(2, 0, 0)
        local $key=StringSplit($arr[$beg],"|")[2]
        local $l=$beg
        local $h=$end
        While $l<$h
                while Number($key) <= Number(StringSplit($arr[$h],"|")[2]) and $l<$h
                        $h-=1
                WEnd
                $arr[$l]=$arr[$h]
                while Number(StringSplit($arr[$l],"|")[2]) <= Number($key) and $l<$h
                        $l+=1
                WEnd
                $arr[$h]=$arr[$l]
        WEnd
        $arr[$l] = StringSplit($arr[$l],"|")[2] & Number($key)
        $l+=1
        quicksort($Arr, $beg, $h)
        quicksort($Arr, $l, $end)
EndFunc
发表于 2018-5-4 11:40:16 | 显示全部楼层
#include <Array.au3>
Local $aArray[15][2] = [[1, 3], [2, 8], [3, 7], [4, 1], [5, 2], [6, 5], [7, 6], [8, 4], [9, 44], [10, 2], [11, 11], [12, 35], [13, 93], [14, 22], [15, 12]]
_ArraySort($aArray, 1, 0, 0, 1)
_ArrayDisplay($aArray)

评分

参与人数 1金钱 +50 收起 理由
chishingchan + 50 谢谢!

查看全部评分

 楼主| 发表于 2018-5-4 16:24:14 | 显示全部楼层
回复 2# afan


    短小精悍!膜拜!谢谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-10 06:38 , Processed in 0.080573 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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