二分搜索算法的实现详解

二分搜索算法实现

  • 问题引入:聚会上猜数,大家为了缩短游戏进程,增加游戏刺激度,往往会采用“猜中间数”的方法,不断取中间数来使得猜数范围快速缩小,而二分算法就是基于这样的思想(不是事例

  • 关于二分算法,有一点要讲

    1. 有序数组规模较大时,二分算法是一个优良的查找算法,就像猜数一样(比如从0-200猜),二分算法要求数组是有序的。
    2. 若输入数组本身有序,那么二分算法可以轻松取得(前提是数组里有我们要的元素)目标元素的位置,若无序,可以使用排序方法令其有序,但是不能取得目标元素在数组中的位置。
  • 我们模拟一个数组,取数组中一个元素作为目标元素,进行算法解

#include
using namespace std;
int cmp(int x,int y)
{
    return x
  • 算法解析
    1.无序数组经sort函数排序,传指针给array_mid_serch函数(即二分查找),还传入了n(数组长度),want_findd(目标元素,为了区分传值的概念,有别于want_find变量。
    2.利用数组长度n,我们取得刚开始数组的起始位置left和结束位置right,当left<=right时(也就是数组不为空时),进行如下算法
    (1)当arr[mid]=want_find时,找到则返回1
    (2)当arr[mid] (3)当arr[mid]>want_find时,说明目标元素在经由mid分割的左区间,故将区间结束位置right赋值为mid-1
    3.若数组为空,即代表找不到,返回0
    4.用answer接收返回值,并用if语句判断返回值相应进行输出

你可能感兴趣的:(二分搜索算法的实现详解)