二分搜索

1、二分搜索原理

2、二分查找go实现源码

// binarySearch
package main

import (
    "fmt"
)

//二分查找
func binarySearch(a []int, x int) int {
    low := 0
    high := len(a) - 1
    for {
        if low <= high {
            mid := (low + high) / 2
            if a[mid] > x {
                high = mid - 1
            } else if a[mid] < x {
                low = mid + 1
            } else {
                return mid
            }
        } else {
            break
        }
    }

    return -1
}

func main() {
    a := []int{1, 2, 3, 4, 5, 6}
    x := 4
    ret := binarySearch(a, x)
    fmt.Println(ret)
}

 

posted @ 2017-12-29 09:00  wywdahai  阅读(138)  评论(0编辑  收藏  举报