永发信息网

求c++程序,折半查找算法

答案:2  悬赏:80  手机版
解决时间 2021-08-17 21:40

利用递归实现折半查找的C++源程序,快速查找一个数在数列中的位置。(数列与被查找数自行从键盘输入。)

具体源代码!~

最佳答案

#include <stdio.h>
int search(int low,int high,int n,int num[]);
void main()
{
    int i,n,num[20];
    for (i=0;i<=19;i++)
    {
    num[i]=i+10;
    printf("%d ",num[i]);
    }
    printf("输入要查找的数:");
    scanf("%d",&n);   
    printf("%d\n",search(0,19,n,num));
}
int search(int low,int high,int n,int num[])
{
    int mid;
    mid = (low+high)/2;
    if (n==num[mid])
    return mid;
    else if(n>num[mid])
    search(mid+1,high,n,num);
    else
    search(low, mid-1,n,num);
}


给分!!!

全部回答
template <class   Record,   class   Key> int   binary_search(   Record   *   r,   const   int   &   low,   const   int   &   high,   const   Key   &   k   ) {   int   mid   =   (low   +   high)/2;   if(   low   <   high   )   {     if(   k   <=   r[mid]   )       binary_search(   r,   low,   mid,   k   );         else       binary_search(   r,   mid+1,   high,   k   );   }   else   if(   low   ==   high   )   {     if(   k   ==   r[mid]   )       return   low;     else       return   -1;   }   else     return   -1; } //第二个版本的迭代实现(binary_search_v2_iteration) template <typename   Record,   typename   Key> int   binary_search(   Record   *   r,   const   int   &   size,   const   Key   &   k   ) {   int   low=0,   high=size-1,   mid;   while(   low   <   high   )   {     mid   =   (low   +   high)   /   2;     if(   k   >   r[mid]   )       low   =   mid   +   1;     else       high   =   mid;   }   if(   low   >   high   )     return   -1;   else   {     if(   k   ==   r[low]   )       return   low;     else       return   -1;   } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天龙八部2外功勇猛宝宝带什么装备好啊
四边形ABCD的四个定点是A(2,3)B(1,-1)C(
福建漳州离深圳有多远,长乐有到漳州的车吗
龙沙区齐齐哈尔卓奇拌饭地址在哪里啊
QQ飞车效率优先和画面优先是什么意思
怎么把另一个的QQ金币合为一个
得了癌症怎么办,我有幻想症该怎么办?
手机大头用来听歌流量怎麽计的,是不是任听。
红萝卜是胡萝卜吗??
我是零八年中专毕业美术专业想考研有什么途径
段氏都有什么名字呀
把一个高3分米的圆柱体平均分后,拼成与它等
十月什么花开,什么花七月种十月一能开
急,旁边有只蟑螂怎么办~!
企业向银行贷款提供的应收帐款和应付帐款明细
推荐资讯
单眼皮变双眼皮的原因,为什么我长一个单眼皮
买单反还是数码相机,单反在平常使用时应该怎
球阀圆角怎么量
夏普sh-07b 性价比 报价 适合人群?
养老保险滞纳金欠了三年的费,要补缴的话,得
什么品种的桂花最好,什么品种桂花值钱
射手座怎样?随便说说也可以,但要实际。
高二英语改错1:In some parts of London, mis
动作描写有哪些,动作描写有什么好处?
四川省雅安市汉源县汉源四中怎么样?
什么茶助消化
成功绝非偶然下一句,科学上的发现有什么偶然
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?