public class Test { public static int binarySearch(Integer[] srcArray,int des) { //定义初始最小、最大索引 int low = 0; int high = srcArray.length - 1; int max =0;int min=0; //确保不会出现重复查找,越界 while (low <= high) { //计算出中间索引值 int middle = (high + low)>>>1 ;//防止溢出 if (des == srcArray[middle]) { return middle; //判断下限 } else if (des < srcArray[middle]) { high = middle - 1; //判断上限 } else { low = middle + 1; } } //若没有,则返回-1 return -1; } public static void main(String[] args){ Integer[] a = {-8,-6,-5,-3,-2,-1,1}; System.out.println(binarySearch(a,5)); sort(a); sort2(a); } public static void sort(Integer[] srcArray){ int max =0; int min = 0; int count =0; for(Integer i:srcArray){ count++; if(max == 0){ if(i<0){ max = i; } }else{ if(i>max && i< 0 ){ max = i; } } if(min == 0){ if(i>0){ min = i; }else { if(i<min && i>0){ min = i; } } } } System.out.println(max+" : "+min+" : "+ count); } public static void sort2(Integer[] srcArray){ int max =0; int min = 0; int s1 = 0; int e2 = srcArray.length - 1; int mid = 0; int count =0; do{ count++; mid = (s1+e2)>>>1; if(srcArray[mid]>0){ e2 = mid; }else if(srcArray[mid] <0){ s1=mid; } } while (srcArray[mid] !=0 && e2-s1>=2); if(srcArray[mid] ==0){ for(int i = mid-1;i>=0;i--){ count++; if(srcArray[i]<0){ max = srcArray[i]; break; } } for(int j = mid+1;j>=0&& j<e2;j++){ count++; if(srcArray[j]>0){ min = srcArray[j]; break; } } }else{ max = srcArray[s1]; min = srcArray[e2]; } System.out.println(max+" : "+min + " : "+ count); } }
相关推荐
Java 二分查找实现 Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现原理是将数组分成两个部分,然后在其中一个部分继续进行搜索,直到找到目标元素或确定目标元素不存在。下面将详细介绍 Java 二...
采用二分查找实现有序序列的查找问题.具体的实现和算法都是很好的示例。希望大家多多学习和使用。
二分查找基于分治算法的实现
但是,这段代码存在一些问题,比如不正确的二分查找实现以及逻辑错误等。下面我们将逐步分析并指出这些问题。 1. **输入读取** ```cpp cin >> n; // 输入字符串数组大小 string *s1 = new string[n]; // 动态...
`Binary_Search_test`文件可能包含了这些测试用例,用于检查我们的二分查找实现是否符合预期。 二分查找算法在实际应用中非常广泛,例如在数据库索引、大规模数据检索和搜索优化等领域都有应用。理解并能熟练掌握二...
本文将深入探讨两种不同的二分查找实现:健忘版和识别版,并分析它们的效率差异。 首先,让我们了解一下基本的二分查找算法。在有序数组中,二分查找通过不断缩小搜索范围来找到目标值。初始时,我们设定查找范围为...
`binarySearch_NotRecursion()`函数是非递归的二分查找实现,而`binarySearch_Recursion()`函数则是递归版本的实现。递归版本通常更具概念清晰性,但可能会占用更多的调用栈空间。 二分查找的时间复杂度是O(logn),...
#### 二、C++二分查找实现 在给定的代码示例中,作者首先使用了冒泡排序算法对输入的数组进行排序,然后利用递归方式实现了二分查找算法。 #### 三、冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复...
在这个描述中提到的"KarateChop"可能是用来测试二分查找实现的单元测试代码。在Python中,通常使用`unittest`模块进行单元测试。单元测试确保了代码的正确性,对于算法来说,这通常包括测试各种边界条件,如空数组、...
### C++中的二分查找实现 #### 一、二分查找简介 二分查找(Binary Search),又称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。该算法的工作原理是通过不断地将查找区间分成两部分,比较中间元素与...
在这个网易笔试题中,我们将深入探讨两种不同的二分查找实现:基础版本和针对网易笔试题的应用版本。 首先,我们来看基础版本的二分查找。这个版本通常用于查找一个已排序的数组中的目标值。算法的基本思想如下: ...
二分查找的三种实现方式 分别是: while for 递归
例如,在上述代码中,二分查找算法的实现使用了递归函数,函数BinarySearch将数组Elements分成两个部分,然后根据查找的元素是否在某一部分中,继续对该部分进行二分查找,直到找到该元素或确定该元素不存在于数组...
在实际编程中,通常会使用循环结构实现二分查找。例如,以下是一个简单的C++实现: ```cpp int binarySearch(int arr[], int left, int right, int target) { while (left ) { int mid = left + (right - left) /...
用java二分查找法实现日期搜索 用java二分查找法实现日期搜索 用java二分查找法实现日期搜索
在实现二分查找时,通常有两种方法:递归和迭代。递归方式更加直观,而迭代方式则可能更节省空间。下面分别对这两种方式进行详细讲解。 1. 递归实现: 递归实现二分查找的代码如下: ```python def binary_search_...
在给定的代码中,二分查找算法函数sq_Dichotomy_Search0实现了有序数组的二分查找。它的参数包括被查找数组、数组元素个数和被查找的关键值。函数返回的值是目标元素在数组中的下标,如果没有找到则返回-1。 插值...
总结一下,Python中基于二分查找实现求整数平方根的方法涉及了以下知识点: 1. 二分查找算法:如何将搜索范围逐步缩小,以及如何根据比较结果更新搜索边界。 2. 数学运算:平方运算和比较运算在寻找平方根过程中的...