Go-二分查找算法

Posted 洪城浪子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go-二分查找算法相关的知识,希望对你有一定的参考价值。

Go语言之简单算法的实现——查找算法

  • Go语言之简单算法的实现——查找算法

    • 1. 二分查找算法

1. 二分查找算法

1.1 二分查找算法: 在指定切片(有序)中查找第一个大于给定值的元素索引

  • 递归实现
/** * 二分查找算法: 在指定切片(有序)中查找第一个大于给定值的元素索引 * 递归实现 * @Param: point []float32 指定的切片 * @Param: v float32 给定的值 * @Return: index int 查找符合条件的元素在切片中的索引 */func BinarySearchFirstGreaterByRecursive(point []float32, v float32) int { size := len(point) if size == 0 { // 切片长为空时返回 0 return 0 } return bsFirstGreaterByRecursive(point, v, 0, size-1)}
/** * 二分查找算法的递归部分: 在指定切片(有序)中查找第一个大于给定值的元素索引 * @Param: point []float32 指定的切片 * @Param: v float32 给定的值 * @Param: low, high int 查找的指定上下标 * @Return: index int 查找符合条件的元素在切片中的索引 */func bsFirstGreaterByRecursive(point []float32, v float32, low, high int) int { if low == high && high != 0 { return high + 1 } if low > high { // 下标大于上标 return 0 } mid := (low + high) / 2 if point[mid] <= v && point[mid+1] >= v { return mid + 1 } else if point[mid] < v { return bsFirstGreaterByRecursive(point, v, mid+1, high) } else { return bsFirstGreaterByRecursive(point, v, low, mid-1) }}

1.2 二分查找算法: 在指定切片(有序)中查找等于给定值的元素索引

/** * 二分查找算法: 在指定切片(有序)中查找等于给定值的元素索引 * 递归实现 * @Param: point []float32 指定的切片 * @Param: v float32 给定的值 * @Return: index int 查找符合条件的元素在切片中的索引 */func BinarySearchEqualByRecursive(point []float32, v float32) int { size := len(point) if size == 0 { // 切片长为空时返回 -1 return -1 } return bsEqualByRecursive(point, v, 0, size-1)}
/** * 二分查找算法的递归部分: 在指定切片(有序)中查找等于给定值的元素索引 * @Param: point []float32 指定的切片 * @Param: v float32 给定的值 * @Param: low, high int 查找的指定上下标 * @Return: index int 查找符合条件的元素在切片中的索引 */func bsEqualByRecursive(point []float32, v float32, low, high int) int { if low > high { // 下标大于上标 return -1 } mid := (low + high) / 2 if point[mid] == v { return mid } else if point[mid] < v { return bsEqualByRecursive(point, v, mid+1, high) } else { return bsEqualByRecursive(point, v, low, mid-1) }}


以上是关于Go-二分查找算法的主要内容,如果未能解决你的问题,请参考以下文章

算法图解(二分查找)

算法:时间复杂度+二分查找法(Java/Go/Python)实现

Go语言之冒泡排序算法和二分查找算法

go语言实现二分查找

Go 语言入门很简单:sort 中的sortInts 方法

PHP实现二分查找算法(代码详解)