二分查找算法【C语言实现】

基本概念:

   二分查找又叫折半查找,是一种简单又快速的查找算法;它对要查找的序列有两个要求:一是该序列必须是有序的,即该序列中所有元素都是按照大小关系排好顺序的,升序和降序都可以,二是该序列必须是顺序存储的.

算法原理:

   只要数组中包含要查找的这个值,假设为x,那么可以通过不断与x比较从而缩小包含x的范围,最终就可以找到它,一开始,范围覆盖整个数组,将数组中间的元素与x相比较,将包含x的范围缩小为原来的一半,就这样反复比较,将包含x的范围不断进行缩小,最终就能在数组中找到x.或者没有找到,返回空.

代码实现:

写在主函数内:

#include<stdio.h>
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int left = 0;
	int right = sizeof(arr) / sizeof(int) - 1;
	int middle = 0;
	int num = 0;
	printf("请输入你要查找的值\n");
	scanf("%d", &num);

	while (left <= right)
	{
		middle = (left + right) / 2;

		if (arr[middle] > num)
		{
			right = middle - 1;
		}
		else if (arr[middle] < num)
		{
			left = middle + 1;
		}
		else
		{
			printf("找到了 下标为%d", middle);
			break;
		}
	}
	if (left > right)
	{
		printf("没找到\n");
	}
	
	return 0;
}

写成二分查找函数:

int bin_search(int arr[], int left, int right, int key)
{
	int mid = 0;

	while (left <= right)
	{
		mid = (left + right)>>1;
		if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			return mid;//找到了返回下标
		}
	}

	return -1;//找不到
}

运行结果:

用图解来描述具体实现过程:

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
二分查找算法是一种在有序数组中快速定位目标值的有效算法。以下是一个使用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; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // 当目标值不存在于数组中时,返回-1 } int main() { int arr[] = {2, 4, 7, 10, 14, 18, 20}; int n = sizeof(arr) / sizeof(arr[0]); int target = 10; int result = binarySearch(arr, 0, n - 1, target); if (result != -1) { printf("目标值 %d 在数组中的索引位置为 %d\n", target, result); } else { printf("目标值 %d 不存在于数组中\n", target); } return 0; } ``` 在这个示例中,我们定义了一个 `binarySearch` 函数来执行二分查找算法。函数接受一个有序数组 `arr`,查找范围的左边界 `left`,查找范围的右边界 `right`,以及目标值 `target`。算法通过不断调整查找范围的左右边界,将目标值与中间元素进行比较,缩小查找范围,最终找到目标值或确定其不存在。 在 `main` 函数中,我们定义了一个有序数组 `arr`,计算数组的长度并设置目标值为10。然后调用 `binarySearch` 函数进行查找,并根据返回结果输出相应的信息。 以上是一个简单的二分查找算法C语言实现示例。希望能够帮助你理解二分查找算法的基本思想和实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默.@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值