**输入一个数字想找出它所在数组中的位置,我们利用循环的方式去实现这一操作**
在这里插入#include<stdio.h>
int main()
{
int i=0,s=0;
int arr[]={1,2,3,4,5,6,7,8};
int m=0;
scanf("%d",&m);
s=sizeof(arr)/sizeof(arr[0]);**//计算数组中元素的个数**
for(i=0;i<s;i++){
if(arr[i]==m){
printf("下标为:%d\n",i);
break;
}
}
if(i==s){
printf("找不到\n");//找不到的情况应在循环完成之后在加入运行。
}
return 0;
}代码片
## 二分查找法:
#include<stdio.h>
int main()
{
int arr[]={1,2,3,5,8,41,56};
int left=0;
int s=sizeof(arr)/sizeof(arr[0]);
int right=s-1;
int m;
scanf("%d",&m);
while(left<=right){
int mid=(left+right)/2;
if(m>arr[mid]){
left=mid+1;
}
else if(m<arr[mid]){//这里是else if不能是if,否则循环不下去了,是if的话就不能一一判断了;
right=mid-1;
}
else{
printf("找到了,下标为:%d\n",mid);
break;//一定要break,不然循环不停止。
}
}
if(left>right)//如果left>right或者找到了之后循环结束也会运行到这里所以一定要判断好关系再输出找不到;
printf("找不到\n");
return 0;
}
【二分查找法由简单到复杂】
最新推荐文章于 2024-05-23 22:02:44 发布