二分算法

来源:互联网 发布:湖北航天信息开票软件 编辑:程序博客网 时间:2024/05/01 00:11

二分算法的感想及其实现

     二分算法其实是一种思想,在某些情况下是有二进制成分在里面的,比如快速幂的实现。不过二分最常用来在一个有序序列中求特定值。当然这个序列必须是有序的,就是不递减或者不递增的序列,为什么要这样,了解一下二分的原理就知道了,在这里不再叙述,或者看一下接下来的代码就清楚了。

   在这里主要叙述一下基本的代码框架,前提假设整个序列是递增的(其他情况类似):

   假设递增序列a[n],我们的任务就是找出元素k的在数组中的下标值(默认序列中含有目标值k)。那我们声明一个变量int l=0,r=n-1;l表示寻找过程中的左下标,r表示寻找过程中的右下标,再声明一个变量 int mid=(l+r)/2;这里体现着二分的思想,如果a[mid]<k;那么r=k-1;否则l=k+1;如果找到直接返回下坐标。

   下面是简单的示例代码:

    

int erfen(k){    int l=0,r=n-1;    int mid;    while(l<r)    {        mid=(l+r)/2;        if(a[mid]==k)            return mid;        else if(a[mid]>k)            r=mid-1;        else            l=mid+1;    }    if(a[l]==k)        return l;    else        return -1;}

0 0
原创粉丝点击