折半查找法c语言

导读 折半查找法也被称为二分查找法,是一种在有序数组中查找某一特定元素的搜索算法。其基本原理是先将待搜索数组分为两半,根据元素所在的区域...

折半查找法也被称为二分查找法,是一种在有序数组中查找某一特定元素的搜索算法。其基本原理是先将待搜索数组分为两半,根据元素所在的区域再进一步细分查找位置。这个过程会一直重复进行,直到找到目标元素或者搜索区间为空。下面是一个简单的折半查找法的C语言实现:

```c

#include

int binarySearch(int arr[], int left, int right, int x) {

if (right >= left) {

int mid = left + (right - left) / 2; // 避免溢出问题

if (arr[mid] == x) { // 找到目标元素

return mid;

} else if (arr[mid] > x) { // 目标元素在左半部分

return binarySearch(arr, left, mid - 1, x);

} else { // 目标元素在右半部分

return binarySearch(arr, mid + 1, right, x);

}

} else { // 未找到目标元素

return -1; // 或抛出异常,表明没有找到元素x

}

}

int main() {

int arr[] = {2, 3, 4, 10, 40}; // 已排序的数组

int n = sizeof(arr) / sizeof(arr[0]); // 元素数量

int x = 10; // 需要查找的元素值

int result = binarySearch(arr, 0, n - 1, x); // 执行二分查找法

if (result != -1) { // 如果找到了目标元素

printf("元素找到在索引 %d 处\n", result);

} else { // 如果未找到目标元素

printf("没有找到元素 %d\n", x);

}

return 0;

}

```

这段代码首先定义了一个名为 `binarySearch` 的函数来实现二分查找的逻辑,然后在 `main` 函数中创建一个有序数组和一个待查找的元素,调用 `binarySearch` 函数进行查找并打印结果。注意,二分查找的前提条件是数组必须是有序的。

版权声明:本文由用户上传,如有侵权请联系删除!