RosettaCodeData/Task/Binary-search/Nim/binary-search-2.nim

8 lines
234 B
Nim

proc binarySearch[T](a: openArray[T], key: T): int =
var b = len(a)
while result < b:
var mid = (result + b) div 2
if a[mid] < key: result = mid + 1
else: b = mid
if result >= len(a) or a[result] != key: result = -1