在Go中对切片进行二分查找需确保数据有序,sort包提供sort.Search实现灵活查找,通过条件函数定位首个不小于目标的索引,结合预定义函数如sort.SearchInts、sort.SearchStrings可简化操作,还可利用插入点保持有序。

在Go语言中,对切片进行二分查找时,必须保证数据已排序。标准库
sort
sort.Search
func binarySearch(arr []int, target int) int {
i := sort.Search(len(arr), func(i int) bool {
return arr[i] >= target
})
if i < len(arr) && arr[i] == target {
return i
}
return -1 // 未找到
}这个写法的关键在于条件函数
arr[i] >= target
对于常见类型,
sort
立即学习“go语言免费学习笔记(深入)”;
sort.Ints(arr)
sort.Strings(arr)
sort.SearchInts(arr, x)
sort.SearchStrings(arr, x)
names := []string{"Alice", "Bob", "Charlie"}
sort.Strings(names)
index := sort.SearchStrings(names, "Bob")
if index != len(names) && names[index] == "Bob" {
fmt.Println("Found at", index)
}利用
sort.Search
func insertSorted(arr []int, x int) []int {
i := sort.Search(len(arr), func(i int) bool { return arr[i] >= x })
arr = append(arr, 0)
copy(arr[i+1:], arr[i:])
arr[i] = x
return arr
}这段代码先用
Search
基本上就这些。只要数据有序,
sort.Search
以上就是Golang sort/search切片二分查找实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号