go 二分查找

352次阅读

共计 765 个字符,预计需要花费 2 分钟才能阅读完成。

概念

二分查找(Binary Search)是一种常用的查找算法,可以在有序数组中快速查找一个指定的值。在 Go 语言中,我们可以使用递归或循环的方式来实现二分查找。在本文中,我将演示如何使用循环方式实现二分查找,并提供一个简单的示例代码。

代码示例

func binarySearch(arr []int, target int) int {left, right := 0, len(arr)-1
    for left <= right {mid := left + (right-left)/2
        if arr[mid] == target {return mid} else if arr[mid] < target {left = mid + 1} else {right = mid - 1}
    }

 return -1
}

func main() {arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    target := 7
    result := binarySearch(arr, target)
    if result == -1 {fmt.Println("The value is not found.")
    } else {fmt.Println("The value is found at index:", result)
    }
}

在上面的代码中,我们定义了一个 left 和一个 right 变量,它们分别表示数组的左侧和右侧边界。在每次循环中,我们计算数组的中间位置 mid,并根据targetarr[mid]的大小关系来更新 leftright的值。如果 arr[mid] 等于 target,则说明找到了该值,直接返回mid 的值。如果最终没有找到该值,则返回 -1。

总的来说,二分查找是一种高效的查找算法,可以在有序数组中快速查找一个指定的值。在 Go 语言中,我们可以使用递归或循环的方式来实现二分查找。本文提供了一个使用循环方式实现的示例代码,以帮助读者更好地理解和应用该算法。

正文完
 
dkp
版权声明:本站原创文章,由 dkp 2023-04-13发表,共计765字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。