这道题我为大家准备了两种方法.方法一是遍历法,我们需要用循环语句把每一个数组元素和你查找的数对比.如果有相等的就退出循环并在屏幕上打印该数字
如果没有相等的,就说明要查找的数字不存在,代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int k = 0;
scanf("%d", &k);
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i = 0; i < sz; i++)
{
if (arr[i] == k)
{
printf("找到了,下标是%d\n", i);
break;
}
}
if (i == sz)
printf("不存在!\n");
return 0;
}
第二种方法就是二分查找法,相比第一种方法要更有效率一点,二分查找.也叫折半查找法,还是先输入要查找的数字放在k变量里,然后用第一个元素的下标和最后一个元素的下标相加除以2,把这个数放在mid变量里,如果mid大于k,说明要找的数在左边,这时我们要用mid左边的元素下标加第一个元素的下标再次除以二再次放入mid里,如果mid小于k,说明要找的数在右边,这时候我门要用mid右边的元素的下标加最后一个元素的下标除以2放在mid里,如果相等,就找到了,
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int k = 0;
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
scanf("%d", &k);
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] < k)
left = mid + 1;
else if (arr[mid] > k)
right = mid - 1;
else
{
printf("找到了,下标是%d\n", mid);
break;
}
}
if (left > right)
printf("找不到了\n");
return 0;
}