二分查找算法c语言代码(C语言中怎样利用折半查找法(二分查找法)找到数列中的一个数)

本文目录
C语言中怎样利用折半查找法(二分查找法)找到数列中的一个数
根据需求,用二分法查找指定数组中的指定数字,代码如下:
#include 《stdio.h》
// 在长度为len的数组a中寻找n,找到就返回数组下标,没找到就返回-1
int search(int a, int len, int n)
{
int index = -1;
int left = 0, right = len, mid = (left + right) / 2;
while (left 《= right)
{
if (n == a[mid])
{
index = mid;
break;
}
elseif (n 》 a[mid])
{
left = mid + 1;
mid = (left + right) / 2;
}
else
{
right = mid - 1;
mid = (left + right) / 2;
}
}
return index;
}
int main()
{
int array = {5, 8, 13, 17, 23, 25, 29, 50, 53}; // 数组
int length = 9; // 数组长度
int aim = 17; // 查找目标
// 输出查找结果, Search 17 in array: 3
printf(“Search %d in array: %d\n“, aim, search(array, length, aim));
return0;
}
用C语言编写非递归算法实现折半查找(二分查找)
char a;//按字典序递增
int search(char *x)//二分查找,返回有序表中大于等于x的元素位置
{
int low=0,high=9,mid,t;
while(low《=high)
{
mid=(low+high)/2;
t=strcmp(a[mid],x);//比较中点位置与x
if(t==0) return mid;//相等返回其位置
else
if(t》0) high=mid-1;//x小于mid元素,则在中点前
else low=mid+1;
}
return high+1;//返回大于x的第一个元素
}
这个是我曾经用过的字符串的二分查找~
请根据需要修改数据类型。。。
二分查找C语言
你的错误挺多的,首先是忘了定义int x;
其次是对strlen()函数的用法错了,你的数组s是整型,但是strlen(char*ch),括号里的只能写字符型数组的变量名,你要求整型数组的长度可以这样求n=sizeof(s)/sizeof(int);
最后一个也是挺致命的错误就是Bsearch()函数里的while循环应该是while(low《=high),而不是while(low《high);以及对break的使用,你也用错了,break是跳出循环的意思,你用在这里就是不执行while的意思,如果你非要用的话应该是continue,然而事实上你什么也不写就好了。具体代码如下:
#include《stdio.h》#include《stdlib.h》
#include《string.h》
int Bsearch(int s,int x,int n);
int main (void)
{
int i;
int n;
int x;//这里你没写
int s={1,2,3,4,5,6,7,8,9,10};
n=sizeof(s)/sizeof(int);//这里应该改成这样
printf(“%d please input x:“,n);
scanf(“%d“,&x);
i=Bsearch(s,x,n);//这里不要写成s
printf(“\n%d“,i);
system(“pause“);
return 0;
}
int Bsearch(int s,int x,int n)
{
int low,high,mid;
low=0;
high=n-1;
while(low《=high)
{
mid=(low+high)/2;
if(s[mid]》x)
{
high=mid-1;
continue;//这行不写也行,下面也是
}
else if(s[mid]《x)
{
low=mid+1;
continue;
}
else
{
return mid;
}
}
return -1;
}

更多文章:
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00




