实现功能
在一个有序数组中,查找想要查找的某个具体数值。
如何实现
主要逻辑:
运用折半查找算法:设置中间值、左变量、右变量,通过比较大小不断将数组查找范围折半缩小,直至找到想要查找的数值k。
代码
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k;
printf("请输入要找的值:\n");
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)
{
right = mid-1;
}
else if(arr[mid]<k)
{
left = mid+1;
}
else
{
printf("已找到,下标为:%d\n",mid);
break;
}
}
if(left>right)
{
printf("无法找到\n");
}
return 0;
}