You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
597 B
37 lines
597 B
package binarysearch
|
|
|
|
import "sort"
|
|
|
|
func search(nums []int, target int) int {
|
|
start := 0
|
|
end := len(nums) - 1
|
|
for start <= end {
|
|
mid := (start + end) / 2
|
|
if nums[mid] == target {
|
|
return mid
|
|
} else if nums[mid] > target {
|
|
end = mid - 1
|
|
} else if nums[mid] < target {
|
|
start = mid + 1
|
|
}
|
|
}
|
|
|
|
return -1
|
|
}
|
|
|
|
func Search(nums []int, target int) int {
|
|
return search(nums, target)
|
|
}
|
|
|
|
// Uses sort.SearchInts
|
|
func SearchStdLib(nums []int, target int) int {
|
|
idx, found := sort.Find(len(nums), func(i int) int {
|
|
return target - nums[i]
|
|
})
|
|
|
|
if found {
|
|
return idx
|
|
}
|
|
return -1
|
|
}
|