编写一个C语言程序,接收一个包含10个整数的乱序数组,然后使用二分法在数组中查找指定元素。如果找到目标元素,返回该元素在排序后数组中的索引;如果没有找到,返回-1。要求使用指针操作数组。
时间: 2024-05-13 10:15:32 浏览: 90
二分法查找某数的C语言程序
可以参考如下代码实现:
```c
#include <stdio.h>
int binary_search(int *arr, int n, int target);
int main() {
int arr[10] = {4, 8, 2, 6, 1, 9, 3, 7, 5, 0};
int target = 9;
int index = binary_search(arr, 10, target);
if (index == -1) {
printf("Target element not found.\n");
} else {
printf("Target element found at index %d.\n", index);
}
return 0;
}
int binary_search(int *arr, int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
在上面的代码中,我们首先定义了一个 `binary_search` 函数用于实现二分查找。该函数接收三个参数:一个指向数组首元素的指针、数组的长度和目标元素的值。在函数中,我们使用 `left` 和 `right` 两个变量记录数组的左右两个边界,不断缩小范围来查找目标元素。如果找到了目标元素,返回其在数组中的索引;否则返回 -1。
在 `main` 函数中,我们定义了一个包含10个随机整数的乱序数组,并指定了目标元素为 9。然后调用 `binary_search` 函数来查找目标元素,并输出结果。
阅读全文