有序查找二分查找2 3 9 15 30 42 47 53 86 100查找元素为47的数代码
时间: 2023-06-02 16:06:07 浏览: 50
这是一个有序的数组,可以用二分查找法来查找元素。找到中间元素,再与目标元素进行比较,如果目标元素大于中间元素,则在后半部分继续查找;如果目标元素小于中间元素,则在前半部分继续查找;如果相等,则找到目标元素,返回其下标。
以下是代码实现:
```
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; // 返回下标
} else if (arr[mid] < target) { // 目标元素大于中间元素
left = mid + 1; // 在后半部分继续查找
} else { // 目标元素小于中间元素
right = mid - 1; // 在前半部分继续查找
}
}
return -1; // 没有找到目标元素,返回-1
}
int main() {
int arr[] = {2, 3, 9, 15, 30, 42, 47, 53, 86, 100};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 47;
int index = binarySearch(arr, 0, n - 1, target);
if (index == -1) {
printf("目标元素不存在!\n");
} else {
printf("目标元素的下标为:%d\n", index);
}
return 0;
}
```