今天,给大家分享一下如何用二分法查找数字的下标。
下面,我分享出来。
这一步,先创建一个数组,定义一个变量,输入想要查找的数,后面就是求这个数组中元素的个数。
数组最左边的下标与最右边的下标。
直接上代码吧
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//定义一个数组
int n = 0;
scanf("%d", &n);
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组长度
//数组名就是首元素地址
//有两个例外
//1. sizeof (数组名),这里的数组名表示整个数组,sizeof (数组名)计算的是整个数组的大小
//2. &数组名,这里的数组名表示整个数组,取出的是数组的地址
int left = 0;//数组最左边数下标
int right = sz - 1;//数组最右边数下标
while (left <= right)
{
int mid = (left + right) / 2;//求中间数下标
if (arr[mid] > n)
{
right = mid - 1;//中间数在n右边,查找范围变为最左边的数和中间数前一个数之间
}
else if (arr[mid] < n)
{
left = mid + 1;//中间数在n左边,查找范围变为中间数后一个数与最右边的数之间
}
else
{
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left>right)
{
printf("找不到下标\n");
}
return 0;
}
希望对你有帮助!