Function Reference

_ArrayBinarySearch

バイナリサーチアルゴリズムを使用して1次元配列の検索をおこないます。

#Include <Array.au3>
_ArrayBinarySearch(Const ByRef $avArray, $vValue [, $iStart = 0 [, $iEnd = 0]])

 

パラメータ

$avArray 検索する配列
$vValue 検索値
$iStart [オプション] 配列の検索開始インデックス
$iEnd [オプション] 配列の検索終了インデックス

 

返し値

成功:: 見つかった値のインデックス
失敗: -1。@errorを次の値に設定します
@error: 1 - $avArrayは配列ではありません
2 - $vValueが配列の最大/最小値外です
3 - $vValueが配列内に見つかりませんでした
4 - $iStartが$iEndよりも大きいです
5 - $avArrayは1次元配列ではありません

 

注意

配列のアイテムに対してバイナリサーチをおこなう場合、検索をおこなう前にアイテムは必ずソートされてなければなりません。
ソートされていない場合、未定義の結果が返されます。

 

関連

_ArrayFindAll, _ArraySearch

 


#include <Array.au3>

;===============================================================================
例1 (手動で定義した配列を使用)
;===============================================================================
Local $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, "$avArray AFTER _ArraySort()")

; 存在するエントリーを検索
$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) ; $avArray[0]を抜かしてインデックス1から開始

; ソートした配列を表示
_ArrayDisplay($avArray, "$avArray AFTER _ArraySort()")

 ; $avArray[0]を抜かしてインデックス1から開始
$iKeyIndex = _ArrayBinarySearch($avArray, "c", 1)
If Not @error Then
   Msgbox(0,'Entry found',' Index: ' & $iKeyIndex)
Else
   Msgbox(0,'Entry Not found',' Error: ' & @error)
EndIf