前言
文章通过一个二分查找算法的简单案例来向大家解释了什么是二分查找,其中包括二分查找算法的具体思想、实际案例和总结。如果大家觉得这篇文章对你有所帮助,可以给不会写代码的我点个赞,有什么问题欢迎大家在评论区留言,我会一一给大家回复。废话不多说,接下来就让我们一起来了解什么是二分查找算法。
(1)什么是二分查找算法?
二分查找又称折半查找、二分搜索、折半搜索等,是在分治算法基础上设计出来的查找算法。二分fa查找算法搜索目标元素的核心思想是:不断缩小查找区域,降低查找目标元素的难度,进而查找出我们想要的元素。 具体实现流程如下: 1.定义一个有序数组arr[ ] = { 1,2,3,4,5,6,7,8,9,10 },目标元素为7 2.根据下标,确定中间元素的下标为( 0+9 )/ 2= 4 中间元素 5 < 7,可以断定 [0, 4] 区域内没有目标元素,目标元素只可能位于 [5, 9] 区域内,如图所示: 3.在 [5, 9] 区域内,重新确定中间元素的下标: [ (4+1) + 9 ] = 7,如图所示: 中间元素 8 > 7,可以断定 [7, 9] 区域内没有目标元素,目标元素只可能位于 [5,6] 中,如图所示: 4.在 [5, 6] 区域内,中间元素的下标为:[ 5 + (7-1) ]= 5,中间元素6 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int left = 0;//左下标
int right = sz - 1;//右下标=元素个数-1
//二分查找循环体
while (left
right = mid - 1;
}
else if (arr[mid]
printf("找到了,下标是:%d\n", mid);//要找的元素正好是中间元素
break; //跳出循环
}
}
if (left > right)//不满足左下标小于或等于右下标的条件,则要找的元素不存在
{
printf("找不到\n");
}
return 0;
}
(3)总结
1.对于代码,只有left |