Hellow,我是jack,今天给大家分享的是C语言实现二分查找。话不多说,让我们直接进入正题。
首先让我们了解下什么是二分查找法
基本思想是将n个元素分成大致相等的两部分,取a [n/2]与x做比较,如果x=a [n/2],则找到x,算法中止;如果x<a [n/2],则只要在数组a的左半部分继续搜索x,如果x>a [n/2],则只要在数组a的右半部搜索x. 时间复杂度即是while循环的次数。 折半查找法 也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O (log n)完成搜索任务。
知道了这些,就然我们试着用代码来实现一下吧。
void is_found(int a[], int k, int sz)
{//二分查找实现方法函数
int left =0;//定义一个变量指向数组的第一个值
int right = sz - 1;//定义一个变量指向数组的最后一个值
while (left<right)
{ //左边的数大于右边的数循环终止
int mid = (left + right) / 2;//设置一个变量并传入中间值
if (a[mid] > k) {//进行对中间值的判断,如果大于寻找值,则将right指向mid-1
right = mid-1;
}
else if (a[mid] < k) {//进行对中间值的判断,如果小于寻找值,则将lift指向mid+1
left = mid + 1;
}
else {
printf("找到了是: %d\n", mid);
break;
}
}
if (left > right)
{
p