栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二分法C++版

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二分法C++版

二分法的学习总结

紧接着之前分享的git bisect知识点,本次呢,我们来学习一下二分法;
笔者能力有限,还望各位读者不吝赐教,万分感谢!
提到二分法便想起来对中折绳子,这些数据储存在数组中并且已经排好序,我们不必一个个去查找符合要求的选项,现在我们看一下二分法如何实现的吧!
前提:
已知数据已经排好序,并且存储在数组中;
首先判断数组是否为空或是数组个数是否符合要求(大于0),满足这些要求的话,我们便可以得到数组的第一个元素low及最后一个元素high,紧接着判断中间元素(low+high)/2与low或hight的大小,再做下一步操作。
我们实现的方式采用非递归方式,代码如下:


int BinSearch(int *Arr, int len, int key) {
	if (Arr == NULL || len <= 0) 
		return -1;
		
	int low = 0;
	int high = len - 1;
	int mid = 0;
	
	while (low <= hight) {
		mid = (low+high)/2;
		if (Arr[mid] > key)
			low = mid + 1;
		else if (Arr[mid] < key)
			high = mid - 1;
			else 
				return mid;
	}
	return -1;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号