|
![](https://clubstatic.excelhome.net/image/common/ico_lz.png)
楼主 |
发表于 2013-6-5 02:58
|
显示全部楼层
本帖最后由 ldy 于 2013-6-5 03:00 编辑
Zamyi 发表于 2013-3-13 17:37 ![](http://club.excelhome.net/static/image/common/back.gif)
RE: JScript 字符串数组另类排序
真没看懂按什么排序,ASC或ASCW都不是,速度比VBA还慢。
谢谢你的代码,JScript排序其实是按照ASCW( Unicode 字符代码) 码排序的,
JScript是基于C语言的 ASCW返回 是Integer 类型 在C 中 是 0- 32768,32769----65536
而VBA中的 Integer 是 -32,768 到 32,767 但实际的序列确是 0--32768,-32767--- -1 你和上面的c语言的 Integer 序列一比较就清楚了
所以 顺序排列的结果 是 ASCW 为负值的反而排在后面了,负值+65536就是C 中对应的序列了
汉字 笔 花 顺序排序会把把 笔 排在前面
ascw 31508 -32079 但数值显示 应该是花在前面 但-32079 对应 C 中的序列其实是 34627 (负值+65536)
二进制数组 20, 123 177,130 从二进制看 就好理解了 先比较高位 123 小于 130 所以 笔 排在前面
单字符排序你那个确实更快。
a(n) = Chr(i) 但是 这个并不是纯粹的排序了,而是按照asc码 重写一遍
如果是多字符串的话,你的代码就无法按照一定的规律排序了
aa = Array("张", "王b", "李", "赵", "钱", "孙", "周", "吴", "郑", "王a")
JScript 顺序排序的话 “王a ”会排在“王b” 的前面,如果你的代码要改成适合多字符排序的话,在时间和空间上都会有问题的。 |
|