C语言中在数组中查找想要的数字,一般可以采用两种方法
1)普通方法
2)折半查找
一般方法耗时耗力,最坏的情况查找次数是数组元素的个数;
折半查找:将元素分成两部分,每次只在一半中查找,省时省力
步骤:
1.设定一个想要查找的数字
2.求出数组元素的个数sizeof(arr[])
3,以数组下标作为查找的依据
4.元素下标的确定
数组左边第一个元素下标为0;
右边最后一个元素为sizeof(arr[])-1;
中间元素mid=mid = (left + right) / 2;
5.如果中间元素>查找数字,则在数组左半边查找,右侧mid-1;
如果中间元素<查找数字,则在数组右半边查找,右侧mid+1;
如果中间元素=查找数字,那就找到了
6.如果左边右边的数字重合了还没有找到,那数组中没有这个数字
代码如下:
#include <stdio.h>
int main()
{
int a;
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
printf("请输入您想要查找的数字:\n");
scanf_s("%d", &a);
int sz = sizeof(arr) / sizeof(arr[0]);//数组元素个数
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] > a)
{
right = mid - 1;
}
else if (arr[mid] < a)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left > right)
{
printf("数组中没有这个数字\n");
}
system("pause");
return 0;
}
运行结果如下: