用c语言编辑代码实现以下功能在给定的有序数组中查找用户输入的值 并提示相应的查找结果。
以下是使用C语言编写的代码,实现在给定的有序数组中查找用户输入的值,并提示相应的查找结果。
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
// 检查中间元素是否是目标值
if (arr[mid] == target) {
return mid;
}
// 如果目标值在左半部分,则继续在左半部分进行二分查找
if (arr[mid] > target) {
right = mid - 1;
}
// 如果目标值在右半部分,则继续在右半部分进行二分查找
else {
left = mid + 1;
}
}
// 目标值不存在于数组中
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
int target;
printf("请输入要查找的值:");
scanf("%d", &target);
int result = binarySearch(arr, 0, n - 1, target);
if (result == -1) {
printf("目标值 %d 不存在于数组中。\n", target);
} else {
printf("目标值 %d 在数组中的索引位置为 %d。\n", target, result);
}
return 0;
}
在上述代码中,我们使用了二分查找算法来在给定的有序数组中查找目标值。首先,我们定义了一个binarySearch函数来执行二分查找。该函数接受一个有序数组arr、查找范围的左边界left、查找范围的右边界right和目标值target作为参数。函数返回目标值在数组中的索引位置,如果目标值不存在于数组中,则返回-1。
在main函数中,我们定义了一个有序数组arr,并计算出数组的长度n。然后,我们提示用户输入要查找的值,并将其存储在变量target中。接下来,我们调用binarySearch函数来进行查找,并将结果存储在变量result中。
最后,我们根据result的值来输出相应的查找结果。如果result为-1,则表示目标值不存在于数组中;否则,我们输出目标值在数组中的索引位置。
请注意,以上代码假设输入的有序数组是升序排列的。如果输入的有序数组是降序排列的,需要相应地修改二分查找算法的逻辑。
原文地址: https://www.cveoy.top/t/topic/hDFM 著作权归作者所有。请勿转载和采集!