c语言折半查法代码

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;
libnet        } 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};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 7;
    int index = binarySearch(arr, 0, n - 1, target);
    if (index == -1) {
        printf("目标元素不存在\n");
    } else {
        printf("目标元素在数组中的下标为:%d\n", index);
    }ips细胞
余干乌黑鸡
3d打印赵州桥    return 0;
}
```
在上面的代码中,binarySearch函数接收四个参数:数组arr、左边界left、右边界right和目标元素target。它通过while循环不断缩小查范围,直到到目标元素或者确定目标元素不存在为止。其中,mid表示当前查范围的中间位置,通过比较arr[mid]和target的大小关系来确定目标元素在哪一部分中。
在main函数中,我们定义了一个有序数组arr和目标元素target,并调用binarySearch函数进行查。如果查成功,就输出目标元素在数组中的下标;否则,输出“目标元素不存在”。
总的来说,折半查法是一种简单而高效的查算法,它的时间复杂度为O(log n),比线性查法的时间复杂度O(n)要快得多。因此,在需要查有序数组中的元素时,我们可以优先考虑使用折半查法。

本文发布于:2024-09-22 09:37:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/397689.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查找   元素   目标   数组   折半   有序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议