题目描述
若存在一个 n 个元素升序的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在则返回下标,否则返回 -1
C 语言具体代码实现
此题二分查找的运用过程如下:
在升序数组 中寻找目标值 ,对于特定下标 ,比较 和 的大小:
,则 即为要寻找的下标
,则 只能在下标 的左侧
,则 只能在下标 的右侧
#include <stdio.h>
int search(int *nums, int numsSize, int target){
if(target > nums[numsSize-1]){
return -1;
}
int low = 0, high = numsSize-1;
while(low <= high){
int mid = (high-low)/2 + low;
if(nums[mid] == target){
return mid;
}else if(nums[mid] > target){
high = mid-1;
}else{
low = mid+1;
}
}
return -1;
}
int main(void){
int nums[] = {2, 4, 7, 9, 10};
int tar = 9;
int index = search(nums, 5, tar);
printf("%d在数组中的索引为:%d", tar, index); // 9在数组中的索引为:3
return 0;
}