C语言写一个函数,实现一个整形有序数组的二分查找

实现二分查找  首先要知道  二分查找是什么  如何应用在实际工程中  

二分查找是在一组由有序数中 利用数组小标  左右下边求和的中间值与实际的要查找的数字比较  这种查找也称折半查找  与传统的查找遍历查找相比 优化了代码  简便的算法   使运行效率变高了

代码如下  有什么不懂的大家可以评论哦

#include<stdio.h>
int binary_search(int arr[], int k, int sz)
{
	int right = sz-1;
	int left = 0;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else if (arr[mid] < k)
		{
			left = mid +1;
		}
		else
		{
			return mid;//返回找到的值

		}
	}
	return -1;//未找到
}

int main()
{
	int k = 7;//目标查找
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);//计算有几个元素
	int pos = binary_search(arr, k, sz);
	if (-1 == pos)
	printf("找不到\n");
	else
	printf("找到了,下标是:%d\n", pos);
	return 0;
}

 运行结果  如下576e4fe300174550a27ffb691ed32190.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值