进一步探讨二分
  gan0t6uKZGh8 2023年11月01日 22 0

二分看似简单,但需注意细枝末节

接下来简单探讨几种查询

以严格大于x的第一位数为例子

//序列为m ,x为查询的数 
int find(int x){//假设序列长为n; 
	int l=1,r=n;
	while(l<=r){
		int mid=(l+r)>>1;
		if(m[mid]<=x) l=mid+1;
		else r=mid-1; 
	}//最后出现一定会出现 l==r,此时mid==l 
	// 若m[mid]<=x,则m[mid+1]>x;
	//若m[mid]>x,则 m[l]>x,m[mid-1]<x 
	return m[l];
}

严格大于等于x的情况,只需要去掉等号号即可
严格小于x的情况,将小于符号改为大于符号即可
严格小于等于x的情况,也只需要去掉等号即可

写题过程中还有具体的探讨,可以从这几种方法中迁移应用

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jTMfQq5cr55P   2024年05月17日   34   0   0 算法与数据结构
  jTMfQq5cr55P   2024年05月17日   30   0   0 算法与数据结构
gan0t6uKZGh8
作者其他文章 更多