用C语言编写以下程序:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引(下标)。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
时间: 2024-09-12 07:03:29 浏览: 49
以下是一个用C语言编写的示例程序,该程序能够在排序数组中找到目标值的索引,如果不存在则返回应该插入的位置:
```c
#include <stdio.h>
// 函数用于在已排序的数组中搜索目标值,如果不存在则返回应该插入的位置
int searchInsert(int* nums, int numsSize, int target) {
int left = 0, right = numsSize - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left; // 在这里返回left,是因为循环结束时left指向的是第一个大于目标值的位置
}
int main() {
int nums[] = {1, 3, 5, 6};
int target = 5;
int index = searchInsert(nums, 4, target);
printf("元素 %d 应该插入的位置为 %d。\n", target, index);
return 0;
}
```
这个程序使用了二分查找算法,首先定义了一个`searchInsert`函数,它接受三个参数:一个指向数组的指针`nums`,数组的大小`numsSize`,以及要查找的目标值`target`。函数通过二分查找的方式来确定目标值的位置,如果数组中不存在该值,则返回应该插入的下标位置。
在`main`函数中,定义了一个排序数组`nums`和一个目标值`target`,调用`searchInsert`函数来获取结果,并输出。
阅读全文