zoukankan      html  css  js  c++  java
  • Go算法学习-二分法查询

    二分法查询

    数据结构:数组

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

    先决条件:①被查询的数组必须是有序数组   比如  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))
    
    }
    
    你得先看重你自己,否则别人就会当你一钱不值。
  • 相关阅读:
    bzoj4864 [BeiJing 2017 Wc]神秘物质
    HNOI2011 括号修复
    bzoj2402 陶陶的难题II
    ZJOI2008 树的统计
    USACO09JAN 安全出行Safe Travel
    HAOI2015 树上操作
    hdu5126 stars
    BOI2007 Mokia 摩基亚
    SDOI2011 拦截导弹
    国家集训队 排队
  • 原文地址:https://www.cnblogs.com/ajiffuu/p/14594909.html
Copyright © 2011-2022 走看看