找回密码
 加入
搜索
楼主: 加速度

[AU3基础] [已解决]搜索数组中的值搜不到,

 火.. [复制链接]
发表于 2012-12-30 15:09:56 | 显示全部楼层
回复 15# annybaby
这个不清楚,尤其是文件尾,懒得折腾了
发表于 2012-12-30 15:10:16 | 显示全部楼层
回复 12# 加速度

看作整体拆分
$iplog=StringSplit($txt,@CRLF,1)
发表于 2012-12-30 15:12:04 | 显示全部楼层
回复 16# netegg

其实我平时也是很少折腾,一般直接用_filereadtoarray
UDF已经考虑了一些情况~~
 楼主| 发表于 2012-12-30 15:15:04 | 显示全部楼层
回复 13# annybaby


    嗯嗯,谢谢了,就楼上你们的讨论就够我研究几天了,你再描述具体我就更头疼了,我再仔细研究研究
发表于 2012-12-30 15:17:28 | 显示全部楼层
回复 9# netegg

蛋兄,远不是这么简单哦,第二个例子可以查到,是因为它运气特别好而已~~
 楼主| 发表于 2012-12-30 15:19:44 | 显示全部楼层
回复 14# netegg


    嗯,我也是尽量不深入,前阵子刚开始学的时候,做程序自动安装,能给程序发送个点击就兴奋的不行,现在都跟数组较上劲了,刚开始用AU的目的都扔一边不管了,陷进去了,每天都想研究
发表于 2012-12-30 15:25:12 | 显示全部楼层
本帖最后由 annybaby 于 2012-12-30 15:34 编辑

回复 19# 加速度

这就是我在第一个帖子里说非常麻烦的原因了,因为里面的涉及到的不只是一个数据类型,数值比较,字符串比较,数值与字符串混合比较,ASCII中字符的编号及排序以及转换等(还有更多),我自己都觉得头痛,也懒得细看了~
我自己是个懒人,有简直直接而有效的方法,我就直接用了,有现在的UDF也是直接就用了,不去想更多

最后,建议尽量少使用_arraybinarysearch,除非你确定数据允许排序(或者你需要备份一下),同时类型转换没有问题,排列时间不用太长,并且你需要大量查询(后面省下的时间多于你前面排序所额外消耗的时间,不然尽量考虑使用_arraysearch)~~

帮助文档里的说明不是没有原因的:

注意/说明
当对一个数组项目进行二进制搜索运算时, 搜索前必须对数组内容进行排序.
否则将会返回不可预知的结果.


你可以自己尝试一下构建一个全是字符串型的数组,与你原来的数据相似,改变一下位置,就有可能查找不到,所以我前面也说了,可以找到是因为运气特别好,而程序的运行是不应该依靠运气来保证的~~
发表于 2012-12-30 15:38:22 | 显示全部楼层
回复 20# annybaby
举个例子说说,我也不是经常遇到排序的事,没深入研究过
发表于 2012-12-30 15:50:09 | 显示全部楼层
回复 23# netegg

说是运气好,是因为它刚好落在第一次折半查找的元素中,我们把它们的位置换一下就找不到了
把你前面举例的数组改一下位置,比如说,把元素5放到前面
#include <array.au3>
Local $a[10] = ['1', '2', '3', '4', '5', '192.168.1.1', '6', '7', '8','9']
MsgBox(0,0,_ArrayBinarySearch($a,'192.168.1.1'))
发表于 2012-12-30 16:06:22 | 显示全部楼层
本帖最后由 netegg 于 2012-12-30 16:07 编辑

回复 24# annybaby
嗯嗯,再想想能不能搞下,倒不是为了数组,listview的排序也是基于这些的,如果有问题,listview也麻烦
发表于 2012-12-30 18:01:13 | 显示全部楼层
本帖最后由 netegg 于 2012-12-30 18:07 编辑

[au3]#include <array.au3>
#include <string.au3>
Local $a[10] = ['1', '2', '3', '4', '5', '192.168.1.1', '6', '7', '8','9']
Local $b[1]
For $i In $a
  _arrayadd($b, String(_StringToHex($i)))
Next
_arraysort($b)
MsgBox(0, '192.168.1.1',_ArrayBinarySearch($b,  String(_StringToHex('192.168.1.1'))))
[/au3]这样试试,不过重新构造数组,效率就难说了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 17:32 , Processed in 0.076861 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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