二分查找的递归和非递归

#include "stdio.h"
 
void Search( int p[], int low, int height, int key)
{
     int middle=(low+height)/2;
     if (low>height)
     {
         printf ( "没有该数!" );
         return ;
     }
     if (p[middle]==key)
     {
         printf ( "该数在序列中的第%d个\n" ,middle+1);
         return ;
     }
     else if (p[middle]>key)
     {
          Search(p,low,middle-1,key);
     }
     else if (p[middle]<key)
     {
          Search(p,middle+1,height,key);
     }
}
int main()
{
     int p[5]={18,21,34,45,58};
     Search(&p,0,4,45);
     return 0;
}


#include <stdio.h>
#include <stdlib.h>


/* run this program using the console pauser or add your own getch, system("pause") or input loop */


int main(int argc, char *argv[]) {
int p[5]={1,7,13,15,20};
    Search(p,0,4,13);

return 0;
}
void Search(int p[],int low1,int height1,int key)
{
int low=low1;
int height=height1;
    while(low<height)
{
    int middle=(low+height)/2;
    if(p[middle]==key)
{
printf("该数在数列中的第%d",middle+1);
return 0;
   
}
else if(p[middle]<key)
{
low=middle+1;
}
else if(p[middle]>key)
{
height=middle-1;
}

}

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值