编程实现二分查找:设已有一个10个元素的整形数组a,且按值从小到大有序。输入一个整数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found“。

#include <stdio.h>
int fun(int*p,int n,int x){//定义一个函数 ; 
  int left = 0;//数组从0开始 ; 
  int right = n-1;//数组长度为元素长度-1 ; 
  int mid ;//定义一个中间值 ,二分法原理; 
   while (left<=right){//保证循环完 ; 
   mid = (right + left)/2;//循环一次,更新一次mid的值 ; 
   if(p[mid]==x){ 
    break;//如果这个p【mid】为你要找的x,跳出循环,进行下一步;
   }
   else if(p[mid]>x){
    right = mid - 1;//如果这个p【mid】>你要找的x,那就让数组长度缩小到中间-1; 
   }
   else left = mid + 1;//同上理 ; 
  } 
  if (left<=right){
   return mid;//如果在循环过程中找到了,return mid; 
  }
  else return -1;//如果循环完还没找到,return -1; 
   
  
 }
int main(){
 int a[10]={1,2,3,4,5,6,7,8,9,10};
 int n,x;
 printf("请输入x: ",x);
 scanf("%d",&x) ;
 int m;
 m = fun(a,10,x);
 if (m<0){
 printf("Not found !");
}
 else printf("你要查找的这个数的下标是%d",m);  
 
 return 0;
}

根据自己理解的注释,欢迎指正错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lemonbaby106

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值