17 lines
406 B
Plaintext
17 lines
406 B
Plaintext
func binary_search(arr, value, low=0, high=arr.end) {
|
|
high < low && return -1
|
|
var middle = ((high+low) // 2)
|
|
|
|
given (arr[middle]) { |item|
|
|
case (value < item) {
|
|
binary_search(arr, value, low, middle-1)
|
|
}
|
|
case (value > item) {
|
|
binary_search(arr, value, middle+1, high)
|
|
}
|
|
case (value == item) {
|
|
middle
|
|
}
|
|
}
|
|
}
|