6-1 二分查找法 (函数题)

采用二分查找法从一个已经升序排序的数组a[n]中,查找某个数k。如果找到k, 输出k所在的数组下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

如:

数组a[n]:3 5 6 7 9

采用二分查找法查找5,则:

第一次比较:6

第二次比较:3

第三次比较:5

则经过3次比较,查找到5,输出数组下标:1

查找4时,则

第一次比较:6

第二次比较:3

第三次比较:5

则经过3次比较后,未找到4,输出-1。

函数接口定义:

int Bsearch(int *a, int n, int k,int *p);

参数说明:a为数组首址,n为数组长度,k为待查找的数, *p为比较次数。

函数返回值:找到k的数组下标值或-1(未找到)。


裁判测试程序样例:
#include<stdio.h>
int Bsearch(int *a, int n, int k,int *p);
int main(){
     int n,cmp,*p=&cmp;
     int pos,num=0;
     int low=0,high,mid,k;
     while(~scanf("%d",&n))
    {
          int a[n];
      for(int i=0;i<n;i++)
      scanf("%d",&a[i]);
       scanf("%d",&k);
       int pos=Bsearch(a,n,k,p);
       printf("%d\n%d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三块不一样的石头

十分满意,一分打赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值