二分查找(折半查找)的思路与实现 java实现
来源:互联网 发布:mac用什么五笔 编辑:程序博客网 时间:2024/05/18 00:17
解题思路:
1.迭代方式:方法内包含四个参数,分别是已排好序的数组(二分查找的前提是数组已经有序),待查找的起始索引start,待查找的结束索引end,目标元素target。首先找到数组中的中间元素的索引,即mid = (start + end)/2;比较mid指向元素与target是否相等,若相等则查找成功;若target比mid指向元素小,则target在mid的左边,则下次查找的结束位置为mid-1;若target比mid指向元素大,则下次查找的起始范围为mid+1;不断迭代直到start和end交叉开来,即start> end时,循环结束。
/** * 二分查找的迭代实现 * * @param arr * 待查找的数组 * @param start * 数组中待查找的起始位置 * @param end * 数组中待查找的结束位置 * @param target * 待查找元素 * @return true即找到,false未找到 */public boolean binarySearch(int[] arr, int start, int end, int target) {if (arr == null || arr.length == 0 || start < 0 || start >= arr.length || end < 0 || end >= arr.length|| start > end) {return false;}boolean result = false;while (start <= end && start < arr.length && end >= 0) {// 求出当前范围的数组中间的索引int mid = (start + end) / 2;if (arr[mid] == target) {result = true;break;} else if (arr[mid] < target) {// 此时缩小查找范围,在数组的右半部分查找start = mid + 1;} else {// 此时缩小查找范围,在数组的左半部分查找end = mid - 1;}}return result;}
2.递归实现:首先还是取出数组的中间元素与target做比较,若相等,则查找成功,这也是递归的终止条件;若target比中间元素小,则在数组的左半部分继续进行二分查找,此时end = mid - 1;若target比中间元素大,则在数组的右半部分继续进行二分查找,此时start = mid + 1;
/** * 二分查找的递归实现 * * @param arr * @param start * @param end * @param target * @return */public boolean binarySearch_recursively(int[] arr, int start, int end, int target) {if (arr == null || arr.length == 0 || start < 0 || start >= arr.length || end < 0 || end >= arr.length|| start > end) {return false;}boolean result = false;int mid = (start + end) / 2;if (arr[mid] == target) {result = true;} else if (arr[mid] < target) {//在数组的右半部分继续进行二分查找result = binarySearch_recursively(arr, mid + 1, end, target);} else {//在数组的左半部分继续进行二分查找result = binarySearch_recursively(arr, start, mid - 1, target);}return result;}
阅读全文
0 0
- 二分查找(折半查找)的思路与实现 java实现
- 折半查找(二分查找)Java实现
- 二分查找(折半查找),Java实现
- java 实现折半(二分)查找
- Java 实现二分查找\折半查找
- Java 实现二分查找\折半查找
- 二分查找(折半查找)的实现
- 【数据结构与算法】【查找】折半查找(二分查找)的代码实现
- 折半查找(二分查找)实现
- 实现折半查找算法(二分查找)
- JavaScript实现折半查找(二分查找)
- Java 语言实现折半查找(二分查找)
- 算法--二分查找(折半查找)-Java实现
- (基础十)折半查找的实现(二分查找)
- 二分查找法(折半查找法)的实现
- C语言实现折半查找(二分查找)的算法
- 采用二分查找(即折半查找)的方法实现查找
- Java代码实现一维数组的二分查找(折半查找)(非递归方法)
- 物理题。。。
- js 正则表达式
- 集合常用的简单的知识点
- Spring bean的自动装配
- 前端十个基础面试题及答案
- 二分查找(折半查找)的思路与实现 java实现
- Angular2入门学习--理解八大构造块
- Mac系统应用目录[./Application]不可写,目录无法自动生成!
- 安卓内存记录
- CodeForces
- Tomcat配置成功,但输入http://localhost:8080/不显示界面的解决方法
- 《编程之美》-求数组的子数组之和的最大值错误
- 深入理解uboot 2016
- boost的时间和日期处理1