二分查找(例子详解)

二分查找

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int key = 8;
	int len = sizeof(arr) / sizeof(arr[0]);//求数组长度
	int left = 0;//0是下标
	int right = len - 1;//代表最后一个元素
	int mid = 0;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > key)//如果中间元素大于所找数字
		{
			right = mid - 1;//mid之前一个元素就是新的right
		}
		else if (arr[mid] < key)//如果中间元素小于所找数字
		{
			left = mid + 1;//mid之后一个元素就是新的left
		}
		else
		{
			break;
		}
		//※两种情况退出:1.因为找到了break退出 2.因为循环条件不满足退出(left>right)
	}
	if (left <= right)//如果因为break退出,就是找到了
	{
		printf("找到了,下标是:%d\n", mid);
	}
	else
	{
		printf("找不到");
	}
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
贝叶斯网络是一种概率图模型,它可以用来描述随机变量之间的依赖关系。在贝叶斯网络,节点表示随机变量,边表示变量之间的依赖关系,而概率表则描述了每一个节点的条件概率分布。 下面以一个简单的例子来详细介绍贝叶斯网络模型的基本概念和应用。 假设我们要建立一个贝叶斯网络模型,来预测某个人是否会购买一件商品。我们可以选择以下三个随机变量作为节点: - 收入水平(Income) - 年龄(Age) - 是否购买商品(Buy) 其,Income 和 Age 是父节点,Buy 是子节点。我们可以根据数据集的实际数据来确定每一个节点的条件概率分布。 例如,我们可以用以下的概率表来描述不同收入水平和年龄段的人购买商品的概率: | Income | Age | Buy = Yes | Buy = No | |--------|-----|-----------|----------| | Low | Young | 0.1 | 0.9 | | Low | Old | 0.3 | 0.7 | | High | Young | 0.6 | 0.4 | | High | Old | 0.8 | 0.2 | 接下来,我们需要根据这个概率表来计算每一个节点的条件概率分布。例如,我们可以计算出一个人在收入水平为 High,年龄为 Young 的情况下购买商品的概率: P(Buy=Yes | Income=High, Age=Young) = P(Buy=Yes) * P(Income=High | Buy=Yes) * P(Age=Young | Buy=Yes) / P(Income=High, Age=Young) 其,P(Buy=Yes) 是先验概率,可以通过数据集的样本比例来计算;P(Income=High | Buy=Yes) 和 P(Age=Young | Buy=Yes) 是条件概率,可以从概率表查找;P(Income=High, Age=Young) 是边缘概率,可以通过对所有 Buy 取值进行求和来计算。 最后,我们可以将这些节点和边连接起来,得到一个完整的贝叶斯网络模型。在得到一个新的数据点时,我们可以利用这个模型来计算每一个节点的后验概率,从而进行预测。 这只是贝叶斯网络模型的一个简单例子,实际应用,贝叶斯网络模型可以用来解决更加复杂的问题,如语音识别、自然语言处理、医学诊断等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值