如何用C语言编写代码来实现一个二分搜索算法并用于操作已排序的数组?
时间: 2024-11-06 18:19:08 浏览: 12
算法:C语言实现第1-4部分基础知识、数据结构、排序及搜索
二分搜索算法,也称为折半查找,是一种在有序数组中查找特定元素的高效搜索算法。以下是用C语言实现的简单版本:
```c
#include <stdio.h>
// 定义二分搜索函数
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)
right = mid - 1;
// 否则搜索右半部分
else
left = mid + 1;
}
// 没有找到目标值,返回-1表示未找到
return -1;
}
int main() {
int sortedArray[] = {1, 3, 5, 7, 9, 11};
int arraySize = sizeof(sortedArray) / sizeof(sortedArray[0]);
int target = 7; // 要搜索的目标值
int result = binarySearch(sortedArray, 0, arraySize - 1, target);
if (result != -1)
printf("Element found at index %d\n", result);
else
printf("Element not found in the array\n");
return 0;
}
```
在这个例子中,我们首先检查中间元素是否是我们正在寻找的值。如果不是,我们会根据中间元素与目标值的大小关系,分别向左或向右递归地缩小搜索范围,直到找到目标值或者搜索区间为空。
阅读全文