首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go语言实现支持泛型的二分查找算法

在这里插入图片描述

二分查找基本原理图:

在这里插入图片描述

在这里插入图片描述

参考代码:

在这里插入图片描述

泛型的定义:

package v2024

type Integer interface {

int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64

}

type Float interface {

float32 | float64

}

type Number interface {

Integer | Float

}

二分搜索函数的基本实现:

package v2024

// SearchBinary 二分查找算法的基本实现

// @param arr 要查找数组,必须是有序的

// @param target 要查找的目标值

// @return int 返回的索引,找到了返回具体的索引,找不到返回-1

func SearchBinary[T Number](arr []T, target T) int {

// 计算开始索引和结束索引

begin := 0

end := len(arr) - 1

// 遍历所有的可能性,在开始索引小于或等于结束索引的时候一直找

for begin <= end {

// 计算中间索引

mid := (begin + end) / 2 // go 语言里面的除法默认就是整除

// 找到了

if arr[mid] == target {

return mid

}

// 中间值比目标值大,去左边找

if arr[mid] > target {

end = mid - 1

} else {

// 中间值比目标值小,去右边找

begin = mid + 1

}

}

// 循环完了都没有找到

return -1

}

基本的测试方法:

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OzNp3b2EvRQVoTh5v13ZCPNw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券