二分法查询
数据结构:数组
二分法查也是数组排序常用的排序算法
先决条件:①被查询的数组必须是有序数组 比如 var data = []int{1,3,4,7,12,24,34,35}
个人理解:如上例子,取数组的中间下标,然后比较要查询的数和中间数的大小,如果大于中间数,则取中间数右侧数组进行比较,小于中间数,取左边数组进行比较。
时间复杂度:O(n)
代码如下:
package main
import "fmt"
/**e
* @Author KyrieWang
* @Description //TODO 二分法查找 找到=值 返回下标,否则返回 -1
* @Date 4:56 下午 2021/3/29
* @Param
* @return
*/
func BinarySort(input []int, finddata int) int {
lowIndex := 0
hightIndex := len(input)
for lowIndex <= hightIndex {
mid := (lowIndex + hightIndex) / 2
if finddata < input[mid] {
hightIndex = mid - 1
} else if finddata > input[mid] {
lowIndex = mid + 1
} else {
return mid
}
}
return -1
}
func main() {
testData := []int{1, 3, 5, 6, 8, 12, 13, 15, 24}
fmt.Println(BinarySort(testData, 6))
}