Solution 2 – iterative
func search(arr []int, target int) int {
var start, end, mid int
end = len(arr) - 1
mid = len(arr) / 2
for start <= end {
if arr[mid] == target {
return mid
}
if arr[mid] < target{
start = mid + 1
} else {
end = (mid - 1)
}
mid = start + (end-start)/2
}
return -1
}

Solution 1 – Recursive
func search(arr []int, target int) int {
return searchRecursive(arr,target,0,len(arr)-1)
}
func searchRecursive(arr []int, target, start, end int) int {
if start>end{
return -1
}
mid := start + (end-start)/2
if arr[mid] == target {
return mid
}
if arr[mid] < target{
return searchRecursive(arr,target,mid+1,end)
} else {
return searchRecursive(arr,target,start,mid-1)
}
return -1
}

Leave a Reply