如何将数字排序[已解决]
本帖最后由 黑色袜子 于 2012-1-9 18:20 编辑是这样的。
我有一个文本,我将文本中的字符串读到数组,然后得到字符串长度。请问如何按字符串长度排序?从长到短。
再思又想也没好法子。。请指点下思路!
答案请看3L! 穷举排序~~数据量不是太大的话应该还能凑合用吧#include <Array.au3>
$str = "1,2,bb,cc,1aa,2aaa,aa,3,4,3aaa"
$arr1 = StringSplit($str, ",")
_ArrayDisplay($arr1)
Dim $arr2, $a, $b, $x = 1, $y = 0
$arr2 = $arr1
For $i = 1 To $arr1 - 1
$a = StringLen($arr1[$i])
If $a > $b Then $b = $a
Next
For $i = 1 To $arr1
If StringLen($arr1[$i]) = $x Then
$y += 1
$arr2[$y] = $arr1[$i]
EndIf
If $i = $arr1 Then
If $x=$b Then ExitLoop
$x += 1
$i = 1
EndIf
Next
_ArrayDisplay($arr2)
#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]
While $oArrayTotal > 0
$oArrayTotal -= 1
$tArray[$oArrayTotal] = $oArray[$oArrayTotal]
$tArray[$oArrayTotal] = StringLen($oArray[$oArrayTotal])
WEnd
_ArraySort($tArray, 1, 0, $oArrayTotal, 1)
$oArrayTotal = UBound($oArray)
While $oArrayTotal > 0
$oArrayTotal -= 1
$oArray[$oArrayTotal] = $tArray[$oArrayTotal]
WEnd
_ArrayDisplay($oArray)
;因為採用快速排列法,結果不穩定 回复 2# wua0550
呵呵,就是不想用枚举才过来问的。现在解决了。 回复 3# Duvet
蒽,我也是用_arraysort解决了。谢谢
页:
[1]