码迷,mamicode.com
首页 > 编程语言 > 详细

算法入门——二分:二分查找

时间:2021-06-02 19:20:27      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:说明   接下来   一个   二分查找算法   长度   com   中间   元素   二分   

二分查找

一、引子

  设想一个猜数字游戏,A从给定的区间中选择一个数字,B要猜这个数,如果B猜的数大了,就高速B猜大了,如果B猜的数小于A选择的数,就告诉B猜小了。理论上经过有限次的猜数后,B一定可以猜到这个数。

二、算法思想

  通过上述猜数字游戏可以发现B每次猜数字时,其实都对给定的区间进行了压缩,最终B通过不断压缩区间猜到了这个数字。所以二分法其实就是一种压缩区间的思想。

  首先给出二分查找适用的范围:给出一个严格递增的序列A,要求从中找出给定的数X。当然你可以通过遍历一遍数组来实现这个算法,但是这样做算法效率就太低了。而对该算法的一种优化就是压缩区间思想。二分查找算法是基于有序序列的查找算法,接下来对算法进行描述:

  1、定义三个指针left、mid、right,分别指向数组的左边界,中间点,有边界,所以开始时left=0、mid=(left+right)/2、right=n-1(这里n为数值长度)

  2、拿mid指向的元素值与目标元素值进行比较

    如果大于目标值:就向左压缩数组,令right=mid-1然后mid=(left+right)/2;

    如果小于目标值:就向右压缩数组,令left=mid+1然后mid=(left+right)/2;

  3、重复步骤2,直到left>right,此时如果未找到目标元素则说明没有该元素。

  下面给出算法代码

  技术图片

 

   当然,此代码可以使用非递归方式实现。

  

算法入门——二分:二分查找

标签:说明   接下来   一个   二分查找算法   长度   com   中间   元素   二分   

原文地址:https://www.cnblogs.com/zyq79434/p/14833524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!