一天一点

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  13 Posts :: 7 Stories :: 3 Comments :: 0 Trackbacks

常用链接

留言簿(18)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

/*
* 二分查找法
*
*/


#include 
<iostream>
#include 
<windows.h>

using namespace std;


int count = 0;
/*
输入开始和长度,与长度除以2的元素对比,如果大于则将长度除以2的元素为开始,长度为 原长度除以2
如果长度等于0,或者找到元素则返回;要注意在递归过程中 不要单独使用一个一个的if 最好是 if else
*/

int half(int begin[],int icount,int value);

int main()
{
    cout 
<< "Hello world!" << endl;
    
int array[100];
    
for (int i = 0;i < 100;i++)
    
{
        array[i] 
= i+100;
        cout 
<<"array["<<i<<"] = "<<array[i] <<endl;
    }

    
int result;
    result 
= half(array,100,99);
    cout
<< "result = " <<result <<endl;
    system(
"pause");
    
return 0;
}


int half(int begin[],int icount,int value)
{
    count
++;
    cout
<< "count : " <<count<<endl;
    
/*
    if (value == *begin)
    {
        return *begin;
    }
    
*/

    
if (value == begin[icount])
    
{
        
return begin[icount];
    }

    
else if (icount == 0)
    
{
        
return -1;
    }

    
else if (value == begin[icount / 2])
    
{
        
return begin[icount / 2];
    }

    
else if (value < begin[icount / 2])
    
{
        half(begin,icount 
/ 2,value);
    }

    
else if (value > begin[icount / 2])
    
{
        half(
&begin[icount / 2],icount / 2,value);
    }

}

posted on 2010-05-18 23:08 billow 阅读(188) 评论(0)  编辑 收藏 引用 所属分类: C++知识

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理