永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-08-17 21:40
  • 提问者网友:心如荒岛囚我终老
  • 2021-08-17 01:25

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

具体源代码!~

最佳答案
  • 五星知识达人网友:青尢
  • 2021-08-17 01:55

#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);
}


给分!!!

全部回答
  • 1楼网友:独行浪子会拥风
  • 2021-08-17 02:36
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;   } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯