/
binarysearch.go
41 lines (24 loc) · 929 Bytes
/
binarysearch.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import "fmt"
func BinarySearch(arr []int, search int) (result int, searchCount int){
middle := len(arr) / 2
switch {
case len(arr) == 0: result = -1//not found
case arr[middle] > search:
result, searchCount = BinarySearch(arr[:middle], search)
case arr[middle] < search:
result, searchCount = BinarySearch(arr[middle+1:], search)
result = middle + 1
default: result = middle
}
searchCount++
return
}
func main() {
searchField := []int{2, 5, 7, 9, 11, 13, 15, 17, 23}
for _, searchNumber := range searchField {
fmt.Printf("Searching for %d in list %v\n", searchNumber, searchField)
result, searchCount := BinarySearch(searchField, searchNumber)
fmt.Printf("Your number was found in position %d after %d steps.\n\n", result, searchCount)
}
}