c语言给定一个按升序排列的整数数组nums和一个目标值target,请实现一个二分查找算法。如果目标值存在于数组中,返回它的索引;否则,返回-1。
时间: 2024-10-19 13:14:58 浏览: 23
c语言-c语言编程基础之leetcode题解第18题四数之和.zip
在C语言中,你可以使用二分查找算法(也称为折半查找)来解决这个问题。这种算法适用于已经排序的数据,因为它每次都将搜索范围减半,直到找到目标值或者确定目标值不在数组中。以下是基本步骤:
```c
int binarySearch(int nums[], int target, int left, int right) {
if (left > right) { // 如果左右边界交叉,则表示未找到目标
return -1;
}
int mid = (left + right) / 2; // 计算中间位置
if (nums[mid] == target) { // 如果中间元素就是目标
return mid;
} else if (nums[mid] < target) { // 如果中间元素小于目标,搜索右半部分
return binarySearch(nums, target, mid + 1, right);
} else { // 否则,搜索左半部分
return binarySearch(nums, target, left, mid - 1);
}
}
// 调用函数并传入数组、目标值和起始、结束下标(通常为0和数组长度-1)
int result = binarySearch(nums, target, 0, sizeof(nums) - 1);
```
阅读全文