返回介绍

Function _ArrayBinarySearch

发布于 2020-03-05 18:21:34 字数 2533 浏览 961 评论 0 收藏 0

_ArrayBinarySearch

使用二进制搜索算法来搜索一个1维数组。

#include <Array.au3>
_ArrayBinarySearch ( $avArray, $iKey [, $i_Base=0] )

参数

$avArray要搜索的一维数组。
$iKey要搜索的字符串或数字。
$i_Base可选:要开始搜索的元素下标,通常设为0或1。

返回值

成功:返回值为 元素下标(匹配项目的位置)。
失败:返回值为 空字符串。
@Error:0 = 无错误。
1 = $avArray 不是数组。
2 = $iKey 越界。
3 = 未发现匹配项目。

注意

在进行二进制搜索之前,数组内容必须已被排序,否则可能会返回未定义的结果。

数组是以引用的方式传递到函数的,因此除了少量内部变量外并不会花费额外的资源。

相关

示例


#include <Array.au3>
Dim $avArray[10]

$avArray[0] = "JPM"
$avArray[1] = "Holger"
$avArray[2] = "Jon"
$avArray[3] = "Larry"
$avArray[4] = "Jeremy"
$avArray[5] = "Valik"
$avArray[6] = "Cyberslug"
$avArray[7] = "Nutster"
$avArray[8] = "JdeB"
$avArray[9] = "Tylo"

; 先排序以便进行二进制搜索
_ArraySort( $avArray)

; 显示排序后的数组
_ArrayDisplay( $avArray, "sorted" )

; 搜索存在的项目
$iKeyIndex = _ArrayBinarySearch ( $avArray, "Jon" )
If Not @error Then
Msgbox(0,'Entry found',' Index:' & $iKeyIndex)
Else
Msgbox(0,'Entry Not found',' Error:' & @error)
EndIf

; 搜索不存在的项目
$iKeyIndex = _ArrayBinarySearch ( $avArray, "Unknown" )
If Not @error Then
Msgbox(0,'Entry found',' Index:' & $iKeyIndex)
Else
Msgbox(0,'Entry Not found',' Error:' & @error)
EndIf


;
; 示例 2, 使用由 StringSplit 返回的数组
;
$avArray = StringSplit("a,b,d,c,e,f,g,h,i",",")

; 先排序以便进行二进制搜索
_ArraySort( $avArray, 0, 1)

; 显示排序后的数组
_ArrayDisplay( $avArray, "sorted" )

; 把第三个参数中设置为1,这将跳过对 $avArray[0] 的搜索
$iKeyIndex = _ArrayBinarySearch ( $avArray, "c",1 )
If Not @error Then
Msgbox(0,'Entry found',' Index:' & $iKeyIndex)
Else
Msgbox(0,'Entry Not found',' Error:' & @error)
EndIf

Exit


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文