二分查找法解题思路
2023-02-18 16:29:06 时间
二分查找法解题思路
每次从数组的中间,比较 需要找的 值,如果小于中位数,则在数组前一半找,如果大于,则在数组后一半找
* 1、首先二分查找法需要先排序
* 2、所以 传参是开始下标,结束下标,数组
* 3、必须先用首尾下标 计算出他的 中点下标
* 4、计算是否 大于中位数 或者 小于 中位数,执行 mid +1 或者 mid -1
/**
* 二分查找法接题思路
* 每次从数组的中间,比较 需要找的 值,如果小于中位数,则在数组前一半找,如果大于,则在数组后一半找
* <p>
* 1、首先二分查找法需要先排序
* 2、所以 传参是开始下标,结束下标,数组
* 3、必须先用首尾下标 计算出他的 中点下标
* 4、计算是否 大于中位数 或者 小于 中位数,执行 mid +1 或者 mid -1
*
* @param args
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String findStr = br.readLine();
Integer arr[] = new Integer[str.length()];
for (int i = 0; i < str.length(); i++) {
arr[i] = Integer.valueOf(str.charAt(i));
}
Arrays.sort(arr);
// 开始查找
Integer index = getErFen(arr, Integer.valueOf(findStr.charAt(0)), 0, arr.length - 1);
System.out.println(index);
System.out.println();
}
private static Integer getErFen(Integer[] arr, Integer findStr, int start, int end) {
while (start <= end) {
int mid = (start + end) / 2;
if (arr[mid] == findStr) {
return findStr;
} else if (arr[mid] < findStr) {
start = 1 + mid;
} else if (arr[mid] > findStr) {
end = mid - 1;
}
}
return -1;
}
相关文章
- 购买笔记本电脑注意啦
- 电脑硬盘分区与符号说明
- 更多模型,更强功能,快来开箱新一代图像分类开源框架
- 重点已划好!OpenMMLab 9 月动态一览
- 可扩展易配置,快来揭秘新一代自监督学习开源框架
- MMDetection 3.0:目标检测新基准与前沿
- 社区协作,简洁易用,快来开箱新一代 YOLO 系列开源库
- MMDet3D 1.1:统一易用的 3D 感知平台
- 5大学习软件推荐
- 简洁易用,更多算法,快来开箱新一代视频目标感知开源工具箱
- MM 星探第 3 期|对话明星项目开发者-圈圈虫
- 支持跨框架评测,这个是你想要的算法评测库吗?
- 你说,怎么把Bean塞到Spring容器?
- MMAction2 全新升级:更强特性,更多算法
- 秒杀场景下如何保证数据一致性?就这个问题我给出了最详细的方案
- 一睹为快!PyTorch 1.13 亮点一览,新库大解读
- 重点已划好!OpenMMLab 10 月动态一览
- 不愧是Alibaba技术官,Kafka的精髓全写这本“限量笔记”里,服了
- 想抓住 AI 绘画风口?绝不能错过的重大算法库升级!
- MMOCR 1.0:这一次,重新出发!