C语言实现折半查找算法:详解与示例代码
C语言实现折半查找算法:详解与示例代码
1. 概述
折半查找算法,也称为二分查找,是一种高效的查找算法,适用于已排序的数据集。其基本思想是:
- 将目标值与数组中间元素进行比较。- 如果目标值等于中间元素,则返回中间元素的索引。- 如果目标值小于中间元素,则在数组左半部分继续查找。- 如果目标值大于中间元素,则在数组右半部分继续查找。
2. C语言实现
以下是使用 C 语言实现折半查找算法的代码:c#include <stdio.h>
// 折半查找函数int binarySearch(int arr[], int n, int target) { int left = 0; int 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;}
int main() { // 创建递增有序表 int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; int n = sizeof(arr) / sizeof(arr[0]);
// 给定一个值 int target = 11;
// 使用折半查找算法在有序表中查找 int result = binarySearch(arr, n, target);
// 输出查找结果 if (result == -1) { printf('目标值 %d 不在有序表中
', target); } else { printf('目标值 %d 在有序表的第 %d 个位置 ', target, result + 1); }
return 0;}
3. 代码解析
-
binarySearch 函数: - 接收三个参数:待查找的数组
arr,数组长度n,目标值target。 - 使用left和right指针分别指向数组的起始和结束位置。 - 在循环中,计算中间元素的索引mid,并将目标值与中间元素进行比较。 - 根据比较结果更新left或right指针,缩小查找范围。 - 如果找到目标值,则返回其索引;否则返回 -1。 -
main 函数: - 创建一个递增有序数组
arr。 - 设置目标值target。 - 调用binarySearch函数进行查找。 - 根据返回值输出查找结果。
4. 调试数据
- 当
target = 11时,程序输出:目标值 11 在有序表的第 6 个位置。- 当target = 8时,程序输出:目标值 8 不在有序表中。
5. 总结
本文介绍了如何使用 C 语言实现折半查找算法,并提供了详细的代码解析和调试数据。折半查找是一种高效的查找算法,适用于已排序的数据集。
原文地址: https://www.cveoy.top/t/topic/f3YP 著作权归作者所有。请勿转载和采集!