fcurrk 发表于 2012-7-2 09:11:22

_ArraySort数组排序怎么才能实现同数据的按第二索引排索

#include <Array.au3>

Local $avArray = [ _
      , _
      , _
      , _
      , _
      ]

_ArraySort($avArray, 0, 0, 0, 1)
_ArrayDisplay($avArray, "副索引2升序排列方式" )

请教怎么样才能让数组排序先按20,32,32,35,19排,然后有两个32的再按后面的7,9排序,非常感谢您的回复。

netegg 发表于 2012-7-2 10:35:06

本帖最后由 netegg 于 2012-7-2 14:30 编辑

#include <Array.au3>

Local $avArray = [ _
      , _
      , _
      , _
      , _
      ]
_arraysort($avArray, 0,0,0,1)
For $i= 0 To 4
$num = _arrayfindall($avArray, $avArray[$i],0,0,0,0,1)
If UBound($num) <>1 Then
       _arraysort($avArray, 0,$num, $num, 2)
endif
next
_ArrayDisplay($avArray)


又想了想,原始数组元素少的话可以,多的话效率不好,有重复计算

shqf 发表于 2012-7-2 13:37:39

看了半天,终于看懂了。思路妙啊,学习了。

fcurrk 发表于 2012-7-2 18:38:30

非常感谢 netegg 大大的回复,学习了,感谢,不知道有没有兼顾效率的方法啊,数据量可能上万的情况会怎么样啊

netegg 发表于 2012-7-2 19:19:23

回复 4# fcurrk
如果数据量一般大(不超过500,具体数忘了),可以先求出单一元素,然后排序,再大的话建议直接数据库处理,交给数据库引擎干这事比较合适

fcurrk 发表于 2012-7-3 12:01:59

回复 5# netegg


感谢指点,请教一下,这些数据我是从SQL里查询出来的,但查询出来的数据我得先进行处理,所以无法在SQL里就排好序,请问有什么别的办法不,期待指点。
非常感谢。

netegg 发表于 2012-7-3 12:50:25

回复 6# fcurrk
查询出来的数据怎么保存的,还是想直接得到排序后的结果

fcurrk 发表于 2012-7-3 13:00:59

回复 7# netegg


感谢,我继续学习,虽然还没有完全搞明白,但有思路就是好。

fcurrk 发表于 2012-7-3 13:06:09

回复 7# netegg


   是这样一回事,我有SQL查询出结果,保存到数组,但查询出来的数据有几列是要按照条件进行处理的,比如在数据库里查询到一个数值,是负数的情况下要加上(其中一列数值*1+10000),在正数的情况下要加上(其中一列数值+10000),所以数据库里我就不会处理了,只能查询出来后数组保存的时候进行判断再处理。

但这样就没有办法在SQL里进行排序了,我需要得到排好序的数据然后按固定格式输出到文本。

netegg 发表于 2012-7-3 13:12:53

回复 9# fcurrk
加查询条件不行吗?

fcurrk 发表于 2012-7-3 13:25:53

回复 10# netegg


    不会弄,能告诉我你的QQ吗?我发给你帮我看下

netegg 发表于 2012-7-3 16:14:49

回复 11# fcurrk
sql的语法我也不太会
页: [1]
查看完整版本: _ArraySort数组排序怎么才能实现同数据的按第二索引排索