Golang二分查找

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 // 二分查找函数
 8 func search(bytes []int, target int, start int, end int) int {
 9     pos := -1
10     for {
11         if bytes[start] == target {
12             pos = start
13             break
14         }
15         if bytes[end] == target {
16             pos = end
17             break
18         }
19         if start == end {
20             break
21         }
22         middle := (end + start) / 2
23         if target == bytes[middle] {
24             pos = middle
25             break
26         } else if target > bytes[middle] {
27             start = middle + 1
28         } else if target < bytes[middle] {
29             end = middle - 1
30         }
31     }
32     return pos
33 }
34 
35 func main() {
36     bytes := []int{1, 5, 7, 9, 12, 15, 18, 25, 26, 33, 41, 47, 52, 62, 75, 84, 94, 100}
37     count := len(bytes)
38     fmt.Println(search(bytes, 33, 0, count-1))
39 }
原文地址:https://www.cnblogs.com/shi2310/p/11633801.html