山海新时代汽车网

当前位置:首页 > 科技 > 正文

图解+代码二分查找(C语言) 📊CppClass

于茜婵2025-03-02 09:12:27 科技
导读 大家好!今天给大家分享一个非常实用的算法——二分查找(Binary Search)。二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过

大家好!今天给大家分享一个非常实用的算法——二分查找(Binary Search)。二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

接下来让我们一起用C语言实现这个算法吧!💪

首先我们需要定义一个函数,接收一个整型数组,目标值以及数组长度作为参数。在函数内部,我们使用while循环来不断缩小搜索范围,直到找到目标值或搜索范围为空为止。在每次循环中,我们计算出中间位置,并将目标值与中间位置的值进行比较,根据比较结果调整搜索范围。最后返回目标值所在的位置,如果没有找到则返回-1。🔍

下面是完整的代码示例:

```c

include

int binarySearch(int arr[], int l, int r, int x) {

while (l <= r) {

int m = l + (r - l) / 2;

// 检查x是否位于中间位置

if (arr[m] == x)

return m;

// 如果x大于中间位置的值,则忽略左半部分

if (arr[m] < x)

l = m + 1;

// 如果x小于中间位置的值,则忽略右半部分

else

r = m - 1;

}

// 如果我们到达这里,那么元素就不在数组中

return -1;

}

// 测试代码

int main(void) {

int arr[] = {2, 3, 4, 10, 40};

int n = sizeof(arr) / sizeof(arr[0]);

int x = 10;

int result = binarySearch(arr, 0, n - 1, x);

(result == -1) ? printf("元素不在数组中\n") : printf("元素在索引%d处\n", result);

return 0;

}

```

希望大家通过这篇内容能够掌握二分查找算法的原理和实现方法。如果有任何疑问,请在评论区留言,我会尽快回复!👋

C语言 二分查找 编程学习

标 签

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章

© 2008-2025 All Rights Reserved .山海新时代汽车网 版权所有

网站地图 | 百度地图| 360地图 | 今日更新