找回密码
 加入
搜索
查看: 1297|回复: 4

[AU3基础] 如何将数字排序[已解决]

[复制链接]
发表于 2012-1-9 15:15:29 | 显示全部楼层 |阅读模式
本帖最后由 黑色袜子 于 2012-1-9 18:20 编辑

是这样的。

我有一个文本,我将文本中的字符串读到数组,然后得到字符串长度。请问如何按字符串长度排序?从长到短。

再思又想也没好法子。。请指点下思路!

答案请看3L!
发表于 2012-1-9 16:32:03 | 显示全部楼层
穷举排序~~数据量不是太大的话应该还能凑合用吧
#include <Array.au3>

$str = "1,2,bb,cc,1aa,2aaa,aa,3,4,3aaa"
$arr1 = StringSplit($str, ",")
_ArrayDisplay($arr1)
Dim $arr2[UBound($arr1)], $a, $b, $x = 1, $y = 0
$arr2[0] = $arr1[0]

For $i = 1 To $arr1[0] - 1
        $a = StringLen($arr1[$i])
        If $a > $b Then $b = $a

Next


For $i = 1 To $arr1[0]
        If StringLen($arr1[$i]) = $x Then
                $y += 1
                $arr2[$y] = $arr1[$i]
        EndIf
        If $i = $arr1[0] Then
                If $x=$b Then ExitLoop
                $x += 1
                $i = 1
                
        EndIf
        
Next
_ArrayDisplay($arr2)

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-1-9 17:23:50 | 显示全部楼层

#Include <Array.au3>
Local $oArray = StringSplit("1,2,bb,cc,1aa,2aaa,aa,3,4,3aaa,5464a", ",", 3)
Local $oArrayTotal = UBound($oArray)
Local $tArray[$oArrayTotal][2]
While $oArrayTotal > 0
        $oArrayTotal -= 1
        $tArray[$oArrayTotal][0] = $oArray[$oArrayTotal]
        $tArray[$oArrayTotal][1] = StringLen($oArray[$oArrayTotal])
WEnd
_ArraySort($tArray, 1, 0, $oArrayTotal, 1)
$oArrayTotal = UBound($oArray)
While $oArrayTotal > 0
        $oArrayTotal -= 1
        $oArray[$oArrayTotal] = $tArray[$oArrayTotal][0]
WEnd
_ArrayDisplay($oArray)

;因為採用快速排列法,結果不穩定

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2012-1-9 18:18:27 | 显示全部楼层
回复 2# wua0550


    呵呵,就是不想用枚举才过来问的。现在解决了。
 楼主| 发表于 2012-1-9 18:19:03 | 显示全部楼层
回复 3# Duvet


    蒽,我也是用_arraysort解决了。谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-19 18:41 , Processed in 0.080083 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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