用C语言编写程序,应用折半查找方法,在一个升序序列中查找值为k的元素。若查找成功,返回元素 k 在序列中的位置,若查找失败,返回失败信息
时间: 2024-10-20 21:04:18 浏览: 27
C语言实现顺序表的顺序查找和折半查找
在C语言中,折半查找(也称二分查找)是一种高效搜索算法,适用于已排序数组。以下是使用C语言实现折半查找方法查找特定值 `k` 的步骤:
```c
#include <stdio.h>
// 定义折半查找函数
int binarySearch(int arr[], int n, int k) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
// 如果中间元素等于目标值,返回其索引
if (arr[mid] == k)
return mid;
// 如果中间元素小于目标值,更新低指针到中间右侧
else if (arr[mid] < k)
low = mid + 1;
// 否则,更新高指针到中间左侧
else
high = mid - 1;
}
// 查找失败,返回 -1 表示未找到
return -1; // 或者可以在这里提供一个自定义错误消息,如 "Element not found"
}
int main() {
int arr[] = {1, 3, 5, 7, 9}; // 示例升序数组
int size = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int result = binarySearch(arr, size, target);
if (result != -1)
printf("Element %d is at index %d\n", target, result);
else
printf("Element %d not found in the array.\n", target);
return 0;
}
```
在这个例子中,我们首先初始化两个指针low和high分别指向数组的开始和结束。然后在一个循环中不断比较中间元素与目标值,如果相等就返回索引,如果不等,则根据大小关系调整范围并继续。如果循环结束后仍没找到目标值,说明查找失败,返回-1。
阅读全文