Go - 26 Go 二分查找

// 二分查找

func BinaryFind(arr *[6]int, lindex int, rindex int, target int) {

    // 当 lindex > rindex 时 是肯定找不到的
    if lindex > rindex {
        fmt.Println("找不到~~~")
        return 
    }
    // 获取中间位置的下标
    mindex := (lindex + rindex) / 2

    if (*arr)[mindex] < target {
        BinaryFind(arr, mindex + 1, rindex, target)
    }else if (*arr)[mindex] > target {
        BinaryFind(arr, lindex, mindex - 1, target)
    }else {
        fmt.Println("找到了,下标为=", mindex)
    }
}
 
// 二分查找(前提是 数组有序)
binary_arr := [...]int{1,8,10,89,100,123}
fmt.Println(binary_arr)
        
BinaryFind(&binary_arr, 0, len(binary_arr)-1, 100)
 
 
 
 
posted @ 2020-11-19 17:02  以赛亚  阅读(129)  评论(0编辑  收藏  举报