mirror of
https://github.com/TheAlgorithms/C
synced 2025-04-22 13:16:14 +03:00
28 lines
654 B
C
28 lines
654 B
C
int search(int* nums, int numsSize, int target){
|
|
int low = 0, high = numsSize - 1;
|
|
while (low <= high) {
|
|
int mid = low + (high - low) / 2;
|
|
if (target > nums[mid])
|
|
low = mid + 1;
|
|
else if (target < nums[mid])
|
|
high = mid - 1;
|
|
else
|
|
return mid;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
/* Another solution: Using bsearch() */
|
|
int cmpint (const void *a, const void *b) {
|
|
return *(int *) a - *(int *)b;
|
|
}
|
|
|
|
int search(int* nums, int numsSize, int target){
|
|
int *ret = bsearch(&target, nums, numsSize, sizeof(int), cmpint);
|
|
if (ret)
|
|
return (ret - nums);
|
|
else
|
|
return -1;
|
|
}
|
|
|