目录
定义
二分查找也叫折半查找,是一种高效率的查找方法,但是折半查找方法要求顺序存储结构,按关键字大小有序排列。
复杂度
时间复杂度即是while循环的次数。
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x;如果x>a[n/2],则只要在数组a的右半部搜索x.
解析
函数binary_search
意思就是binary_search(数组,要找的数,数组长度)
代码实现
int binary_search(int arr[], int x, int sz)
{
int left = 0;
int right = sz - 1;
while (left <= right)//循环条件
{
int mid = (left + right) / 2;
if (arr[mid] < x)
left = mid + 1;
else if (arr[mid] > x)
right = mid - 1;
else
return mid;//找到返回main函数;
}
return -1;//找不到退出
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9 };
int x;
scanf("%d",&x);//输入需要查找的数
int sz = sizeof(arr) / sizeof(arr[0]);//数组大小
int ret = binary_search(arr, x, sz);//函数
if (ret == -1)
printf("找不到\n");
else
printf("找到了,下标是:%d\n", ret);
return 0;
}
运行结果
总结
个人见解,有错误欢迎评论区指出。同时也希望这篇文章能帮到大家!!!