二分法查询

数据结构:数组

二分法查也是数组排序常用的排序算法

先决条件:①被查询的数组必须是有序数组   比如  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))

}

 

posted on 2021-03-29 23:10  王章章章  阅读(90)  评论(0编辑  收藏  举报