二分法查找(对有序的数列才可以使用)
//二分法查找必须是对有序的数列
#include<stdio.h>
#define n 20
int main()
{
int a[n]={2,3,5,7,8,11,13,16,17,23,25,31,34,37,38,40,42,47,48,50} ; //定义区间内有十个整数
int x,h,l,m; //x为要输入的数字,h表示最大的位数,l表示最小的位数,m表示中间位的位数
scanf("%d",&x);
h=n-1;
l=0;
m=(h+l)/2;
while(a[m]!=x&&l<h)
{
if(x>a[m])
l=m+1;
else
h=m-1;
m=(h+l)/2;
}
if(x==a[m])
printf("FOUND %d %d\n",x,m);
else
printf("NOT FOUND!\n");
return 0;
}
本文介绍了一种在有序数列中查找特定元素的方法——二分法查找,并提供了一个具体的C语言实现示例。该算法通过不断将查找区间对半分割来减少查找范围,直至找到目标元素或确定元素不存在于数列中。
4239

被折叠的 条评论
为什么被折叠?



