ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: ldy

[原创] JScript 字符串数组另类排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-12 20:56 | 显示全部楼层
本帖已被收录到知识树中,索引项:脚本语言应用
收藏了,先学学.

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-5 02:58 | 显示全部楼层
本帖最后由 ldy 于 2013-6-5 03:00 编辑
Zamyi 发表于 2013-3-13 17:37
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” 的前面,如果你的代码要改成适合多字符排序的话,在时间和空间上都会有问题的。

TA的精华主题

TA的得分主题

发表于 2013-9-13 17:40 | 显示全部楼层
ldy 发表于 2013-6-5 02:58
谢谢你的代码,JScript排序其实是按照ASCW( Unicode 字符代码)  码排序的,
JScript是基于C语言的 ASC ...

学习JS。备查。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-22 17:21 , Processed in 0.026164 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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