您的位置:首页 > 其它

二分查找

2015-07-17 16:40 211 查看
此段来自:http://baike.baidu.com/link?url=5BxiVhAiQ3LLeLLs_wYrDjQW55DaksohkqMNm5KJdhkLP5BsxQ_WbyqDuhjnvl90ys9UAfr_mcNY-k6mRKrstq#3_7

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

#include<iostream>
using namespace std;
int fun(char *str,char ch)
{
int low=0;
int high,k;
for(high=0;str[high]!=0;high++)
while(low<high)
{
k=(low+high)/2;
if(str[k]==ch)
return k;
else if(str[k]>ch)
high=k-1;
else
low=k+1;
}
if(str[low]==ch)
return low;
return -1;
}
int main()
{
char str[]={'a','b','c','d','e','f','g','h','i','j','k',0};
char ch;
cout<<"请输入一个字符:"<<endl;
while(cin>>ch)
{
cout<<"输入数字的位置是:"<<fun(str,ch)<<endl;
}
return 0 ;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: