美文网首页
Golang二分法查找

Golang二分法查找

作者: 倪大头 | 来源:发表于2021-05-26 17:16 被阅读0次

使用二分查找需要数组是有序的。

比如在升序排列的数组中,将数组中间位置的数据与目标数据比较,如果相等则查找成功;否则按照中间位置把数组分为两部分,如果中间位置大于目标数据,则在前半部分中以取中心点的方式继续比较,否则查找后半部分。

func main()  {
    array := []int{1, 2, 3, 4, 5}
    if index, ok := BinarySearch(array, 2); ok {
        fmt.Printf("目标数据下标是:%v", index)
    } else {
        fmt.Println("没有找到")
    }
}

func BinarySearch(arr []int, targetValue int) (int, bool) {
    leftIndex := 0 // 左下标
    rightIndex := len(arr) - 1 // 右下标

    // 若leftIndex大于rightIndex,表示数组中没有该数据
    for leftIndex <= rightIndex {
        // 中间下标
        middleIndex := (leftIndex + rightIndex) / 2

        if arr[middleIndex] > targetValue {
            // 目标数据在左半边
            rightIndex = middleIndex - 1
        } else if arr[middleIndex] < targetValue {
            // 目标数据在右半边
            leftIndex = middleIndex + 1
        } else {
            // 找到目标数据
            return middleIndex, true
        }
    }
    return -1, false
}

相关文章

  • golang循环递增数组查找值

    循环递增数组查找值 golang 1.实现要求 在循环递增数组中查找某个值 2.实现方法 使用二分法实现查找 使用...

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 数据结构-递归

    二分法查找

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • Golang二分法查找

    使用二分查找需要数组是有序的。 比如在升序排列的数组中,将数组中间位置的数据与目标数据比较,如果相等则查找成功;否...

  • 二分查找

    以二分法来提升查找效率 二分法查找到key的合适位置 put get delete 二分查找的查找操作为O(log...

  • 算法和排序

    1、线性查找 2、二分法查找 3、冒泡排序

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

网友评论

      本文标题:Golang二分法查找

      本文链接:https://www.haomeiwen.com/subject/ecoksltx.html