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。 - 使用 leftright 指针分别指向数组的起始和结束位置。 - 在循环中,计算中间元素的索引 mid,并将目标值与中间元素进行比较。 - 根据比较结果更新 leftright 指针,缩小查找范围。 - 如果找到目标值,则返回其索引;否则返回 -1。

  • main 函数: - 创建一个递增有序数组 arr。 - 设置目标值 target。 - 调用 binarySearch 函数进行查找。 - 根据返回值输出查找结果。

4. 调试数据

  • target = 11 时,程序输出:目标值 11 在有序表的第 6 个位置。- 当 target = 8 时,程序输出:目标值 8 不在有序表中

5. 总结

本文介绍了如何使用 C 语言实现折半查找算法,并提供了详细的代码解析和调试数据。折半查找是一种高效的查找算法,适用于已排序的数据集。

C语言实现折半查找算法:详解与示例代码

原文地址: https://www.cveoy.top/t/topic/f3YP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录