Skip to content

Commit ea0e51e

Browse files
author
stone
committed
add binary serach
1 parent efa016d commit ea0e51e

File tree

5 files changed

+62
-0
lines changed

5 files changed

+62
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.idea/

main

2.11 MB
Binary file not shown.

main.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package main
2+
3+
import "algorithm/search"
4+
5+
func main() {
6+
search.Use()
7+
}

search/BinarySearch.go

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package search
2+
3+
import (
4+
"bufio"
5+
"fmt"
6+
"learn_go/algorithm"
7+
"os"
8+
"sort"
9+
"strconv"
10+
)
11+
12+
func BinarySearch(key int, a []int) int {
13+
lo := 0
14+
hi := len(a) - 1
15+
for {
16+
if lo > hi {
17+
break
18+
}
19+
mid := lo + (hi - lo) / 2
20+
if key < a[mid] {
21+
hi = mid - 1
22+
} else if key > a[mid] {
23+
lo = mid + 1
24+
}else{
25+
return mid
26+
}
27+
}
28+
return -1
29+
}
30+
31+
func Use() {
32+
scanner := bufio.NewScanner(os.Stdin)
33+
var whiteList []int
34+
for scanner.Scan(){
35+
if s, err := strconv.Atoi(scanner.Text()); err == nil{
36+
whiteList = append(whiteList, s)
37+
}
38+
}
39+
sort.Ints(whiteList)
40+
fmt.Println(algorithm.BinarySearch(30, whiteList))
41+
42+
}
43+

search/in.txt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
12
2+
13
3+
14
4+
15
5+
17
6+
20
7+
22
8+
11
9+
28
10+
26
11+
22

0 commit comments

Comments
 (0)