C语言实现二分查找算法
以下是使用C语言实现二分法的示例代码:
#include <stdio.h>
// 在有序数组 arr 中查找元素 x 的位置
int binarySearch(int arr[], int n, int x)
{
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 如果未找到,返回 -1 表示失败
}
int main()
{
int arr[] = { 2, 3, 6, 8, 10, 12, 15 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 8;
int index = binarySearch(arr, n, x);
if (index == -1) {
printf("未找到元素 %d\n", x);
} else {
printf("元素 %d 的位置是 %d\n", x, index);
}
return 0;
}
该程序首先定义了一个 binarySearch 函数,该函数接受一个有序数组、数组长度和要查找的元素,并返回元素在数组中的索引(如果找到)或 -1(如果未找到)。
该函数使用两个指针(left 和 right)来跟踪搜索范围。在每次循环中,它计算中间元素的索引,并将其与要查找的元素进行比较。如果中间元素等于要查找的元素,则返回中间元素的索引。否则,如果中间元素小于要查找的元素,则将左指针移动到中间元素的右侧;否则将右指针移动到中间元素的左侧。如果未找到元素,则返回 -1 表示失败。
在 main 函数中,我们定义了一个有序数组 arr 和要查找的元素 x。我们调用 binarySearch 函数,并将其结果存储在 index 变量中。如果 index 等于 -1,则打印未找到元素的消息;否则,打印元素的位置。
该程序的输出应为:
元素 8 的位置是 3
原文地址: https://www.cveoy.top/t/topic/nC66 著作权归作者所有。请勿转载和采集!