码迷,mamicode.com
首页 > 其他好文 > 详细

动态法

时间:2016-11-06 07:42:29      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:span   const   div   name   动态   center   type   log   tor   

1)二分查找法

可以看出非组合的尾递归,可以用循环来取代。

template<typename T>
int centerFind(const vector<T>& source,const T& finder)
{
    int ret=-2;
    int startIndex=0;
    int endIndex=source.size()-1;
    int CenterIndex=startIndex+(endIndex-startIndex)/2;

    while(ret==-2)
    {
        if(CenterIndex==startIndex&&startIndex==endIndex)//1个数
        {
            if(source[CenterIndex]==finder)
            {
                ret=CenterIndex;
            }
            else
            {
                ret=-1;
            }
        }
        else
        {
            if(source[CenterIndex]==finder)
            {
                ret=CenterIndex;
            }
            else if(source[CenterIndex]>finder)
            {
                endIndex=CenterIndex-1;
                CenterIndex=startIndex+(endIndex-startIndex)/2;
                if(startIndex>endIndex)
                {
                    ret=-2;
                }
            }
            else
            {
                startIndex=CenterIndex+1;
                CenterIndex=startIndex+(endIndex-startIndex)/2;
                if(startIndex>endIndex)
                {
                    ret=-2;
                }
            }
        }
    }
}

 

动态法

标签:span   const   div   name   动态   center   type   log   tor   

原文地址:http://www.cnblogs.com/lsfv/p/6034643.html

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