二分法查找元素
//二分法查找元素
#include"stdio.h"
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int num = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int left = 0;//左下标
int right = sz - 1;//右下标
while (left <= right)//循环条件
{
int mid = (left + right) / 2;//二分 ,注意注意,不可以放到while循环外面
if (num>arr[mid])
{ //原因,放到外面的话,只能进行一次二分。
left = mid + 1;
}
else if (num<arr[mid])
{
right = mid - 1;
}
else
{
printf("找到了,它的值为:%d\n", mid);
break;//跳出循环
}
}
if (left>right)
//需要有,否则输出找到了break跳出之后,还会输出找不到。
//循环条件,左下标大于右下标
{
printf("找不到\n");
}
return 0;
}