使用二分查找法,在一个有序数组中查找具体的某个数字
int main()
{ //创建一个有序数组
int arr[] = {1,2,3,4,5,6,7,7,9,10};
int a = 0;
//输入 要查找的数
scanf("%d", &a);
//给定数组的左下标赋值给变量x
int x = 0;
//计算数组的右下标赋值给变量y
int y = (sizeof(arr) / sizeof(arr[0])-1) ;
int z = 0;
while (x <= y)//给定循环变量判断条件,左下标不能大于右下标。
{
z = (x + y) / 2;
//用要查找的数与数组中间的数 进行比较,如果要查的大于数组中间值,查找范围在中间值的右面
if (a > arr[z])
{
x = z+1;
}
//用要查找的数与数组中间的数 进行比较,如果要查的小于数组中间值,查找范围在中间值的左面
else if (a < arr[z])
{
y = z-1;
}
//如果相等,退出判断
else
{
break;
}
}
if (x <= y)//如果在左下标不大于右下标的情况下,说明找到了,否则没有要查找的数
{
printf("找到了,下标是%d\n", z);
}
else//
{
printf("找不到\n");
}
return 0;
}
C.在有序数组中找到一个数字
最新推荐文章于 2023-07-21 21:57:58 发布