找回密码
 加入
搜索
楼主: tryhi

[效率算法] 带数值的字符串数组排序讨论

 火... [复制链接]
发表于 2012-8-20 23:13:13 | 显示全部楼层
回复 15# tryhi
对呀,这个叫什么排序方法,同一字符串,有数字按从右向左,按文字从左向右

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
tryhi + 20 + 1

查看全部评分

发表于 2012-8-20 23:13:13 | 显示全部楼层
本帖最后由 Duvet 于 2012-8-20 23:35 编辑

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +78 收起 理由
tryhi + 78

查看全部评分

 楼主| 发表于 2012-8-20 23:26:34 | 显示全部楼层
回复  tryhi
对呀,这个叫什么排序方法,同一字符串,有数字按从右向左,按文字从左向右
netegg 发表于 2012-8-20 23:13


不是啊,数字按大小啊,哪有从右向左,像这样
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12

按字符串排不是变成了这样
a1
a10
a11
a12
a2
a3
a4
a5
a6
a7
a8
a9
明显不符合逻辑嘛,我那种排序就不会出现这样
发表于 2012-8-20 23:33:57 | 显示全部楼层
回复 18# tryhi
還以為我弄錯了...

评分

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

查看全部评分

 楼主| 发表于 2012-8-20 23:44:58 | 显示全部楼层
**** 本内容被作者隐藏 ****
Duvet 发表于 2012-8-20 23:13


17的答案很不错,不过不具备通用性,比如
Local $Array[21] = ['4cxd25df5.6', '4cxd25df25', '45cxd5f18', '45cxd5f5','z','z','z','z','z','z','z','z','z','z','z','z','z','z','z','z','z']
  
结果就不对了,不过你的方法非常好
发表于 2012-8-21 02:02:37 | 显示全部楼层
本帖最后由 Duvet 于 2012-8-21 02:10 编辑

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 3金钱 +100 收起 理由
fastidium + 10 怎么会有这么绝妙的排序方法呢!佩服啊!
tryhi + 80 学习了
drunk + 10 不错!有想法,学习了!

查看全部评分

发表于 2012-8-21 10:56:46 | 显示全部楼层
看看啥内容?

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
tryhi + 20 + 1

查看全部评分

发表于 2012-8-21 15:25:31 | 显示全部楼层
这个有点意思,按理说这个入手不是很难,稍微懂点的都能弄出个算法来,但要实现效率高的可能还是要点学问的,我也来看看

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
tryhi + 20 + 1

查看全部评分

发表于 2012-8-21 19:43:06 | 显示全部楼层
本帖最后由 kevinch 于 2012-8-22 11:19 编辑

游客,如果您要查看本帖隐藏内容请回复
才发现,isnumber检测不出来文本形式的数字

评分

参与人数 1金钱 +70 贡献 +5 收起 理由
tryhi + 70 + 5 学习了

查看全部评分

发表于 2012-8-25 08:47:06 | 显示全部楼层
回复 1# tryhi


    是否只有数字和字母这些字符?

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
tryhi + 20 + 1 你可以扩展出更通用的条件

查看全部评分

发表于 2012-8-25 11:14:39 | 显示全部楼层
回复。看看效果

评分

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

查看全部评分

发表于 2012-8-25 12:01:59 | 显示全部楼层
排序和字符串比较太复杂了,函数写不出来,不过你excel文件的排序我可以变通解决,就是ABC10,ABC5,ABC20,ABC2.5可以换成ABC10.0,ABC05.0,ABC20.0,ABC02.5,然后再排序就是你要的结果了

评分

参与人数 1金钱 +10 贡献 +3 收起 理由
tryhi + 10 + 3 请指教

查看全部评分

 楼主| 发表于 2012-8-26 08:23:17 | 显示全部楼层

2

排序和字符串比较太复杂了,函数写不出来,不过你excel文件的排序我可以变通解决,就是ABC10,ABC5,ABC20,ABC2. ...
1007236046 发表于 2012-8-25 12:01



    数据是现成的,假如有1万个,请问如何换?
发表于 2012-8-26 12:55:45 | 显示全部楼层
回复 28# tryhi
应该还是要正则提取数字加vba的format语句格式化输出

评分

参与人数 1金钱 +25 贡献 +1 收起 理由
tryhi + 25 + 1

查看全部评分

发表于 2012-8-26 15:53:38 | 显示全部楼层
本帖最后由 1007236046 于 2012-8-27 22:51 编辑

回复 28# tryhi


    我以为你数据还没生成或者量少呢,那么以后就可以我这样生成,现成的数据我也不会换了,你可以试试29楼说的方法吧
刚想到可以用c语言里的格式输出,以后你可以试着像这样输入
#include <Array.au3>
Local $a[4] = [10,2.5,20,5]
For $i = 0 To 3
        $a[$i] = "ABC" & StringFormat("%4.1f",$a[$i])
Next
_ArraySort($a)
_ArrayDisplay($a)

评分

参与人数 1金钱 +15 贡献 +2 收起 理由
tryhi + 15 + 2

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-28 01:14 , Processed in 0.075641 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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