用折半查找法在(05 13 19 21 37 56 64 75 80 88 92)表中查找元素21
二分查找算法,写个排序函数就可以实现了
数组已经排序了吗?要不要先排序。
int select_arr(int arr[], int len, int arr_value)
{
while (1)
{
int left = 0; //数组的左侧下标
int right = len-1; //数组的右侧下标
while (left <= right)
{
int mid = (left + right) / 2; //定义中间位的下标
int mid_value = arr[mid]; //定义中间值的基准值
if (mid_value == arr_value) //如果基准值正好等于要查找的值,则自动返回要找的位置
{
return mid;
}
//如果基准值大于要查找的值,表明值在左半边,新的查找范围为中间值-1位,也就是mid-1
else if (mid_value > arr_value)
{
right = mid - 1;
}
//如果基准值小于要查找的值,表明值在右半边,新的查找范围为中间数+1位,也就是mid+1;
else if (mid_value < arr_value)
{
left = mid + 1;
}
}
return -1;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632