`
wangyanlong0107
  • 浏览: 499736 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

二分查找(java实现)

 
阅读更多

二分查找

算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。

 

实现:

 1.非递归代码

 
public static int biSearch(int []array,int a){
        int lo=0;
        int hi=array.length-1;
        int mid;
        while(lo<=hi){
            mid=(lo+hi)/2;
            if(array[mid]==a){
                return mid+1;
            }else if(array[mid]<a){
                lo=mid+1;
            }else{
                hi=mid-1;
            }
        }
        return -1;
    }
 

 2.递归实现

 
public static int sort(int []array,int a,int lo,int hi){
        if(lo<=hi){
            int mid=(lo+hi)/2;
            if(a==array[mid]){
                return mid+1;
            }
            else if(a>array[mid]){
                return sort(array,a,mid+1,hi);
            }else{
                return sort(array,a,lo,mid-1);
            }
        }
        return -1;
    }
 

 时间复杂度为 O(logN)   

 

查找第一个元素出现的位置(元素允许重复)

 
public static int biSearch(int []array,int a){
        int n=array.length;
        int low=0;
        int hi=n-1;
        int mid=0;
        while(low<hi){
            mid=(low+hi)/2;
            if(array[mid]<a){
                low=mid+1;
            }else{
                hi=mid;
            }
        }
        if(array[low]!=a){
            return -1;
        }else{
            return low;
        }
    }
 

查询元素最后一次出现的位置

 
public static int biSearch(int []array,int a){
        int n=array.length;
        int low=0;
        int hi=n-1;
        int mid=0;
        while(low<hi){
            mid=(low+hi+1)/2;
            if(array[mid]<=a){
                low=mid;
            }else{
                hi=mid-1;
            }
        }
    
        if(array[low]!=a){
            return -1;
        }else{
            return hi;
        }
    }
 
分享到:
评论

相关推荐

    二分查找java实现

    二分查找的三种实现方式 分别是: while for 递归

    二分查找Java实现

    while(low){ if(x==arr[mid]){ return mid; } else if(mid&gt;0&&x[mid]){... else if(mid){//若前面没有判断,则当要查找数超过arr数组中最大值时出现死循环。 low=mid+1; mid=(low+high)/2; }

    二分查找JAVA实现

    二分查找 折半查找

    java 二分查找 java 二分查找

    java 二分查找 java 二分查找java 二分查找 java 二分查找java 二分查找 java 二分查找java 二分查找 java 二分查找java 二分查找 java 二分查找java 二分查找 java 二分查找java 二分查找 java 二分查找java 二分...

    java二分查找实现

    Java 二分查找实现 Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现原理是将数组分成两个部分,然后在其中一个部分继续进行搜索,直到找到目标元素或确定目标元素不存在。下面将详细介绍 Java 二...

    用java二分查找法实现日期搜索

    用java二分查找法实现日期搜索 用java二分查找法实现日期搜索 用java二分查找法实现日期搜索

    java实现二分查找

    java实现二分查找,包含时间复杂度的计算

    用java实现二分查找法BianrySearch

    用java实现二分查找法BianrySearch 用java实现二分查找法BianrySearch 用java实现二分查找法BianrySearch

    分别使用Java和Python实现二分查找算法

    二分查找:分别使用Java和Python实现二分查找算法 二分查找:分别使用Java和Python实现二分查找算法 二分查找:分别使用Java和Python实现二分查找算法 二分查找:分别使用Java和Python实现二分查找算法 二分查找:...

    java 二分查找法的实现方法

    以下是关于Java实现二分查找法的详细解释: 1. **算法原理**: 二分查找法首先将数组或列表分为左、中、右三部分,然后比较中间元素与目标值的关系。如果目标值等于中间元素,则查找成功;若目标值小于中间元素,...

    JAVA实现二分查找

    JAVA用递归和非递归的方法实现二分查找

    二分查找--java实现

    用java实现了二分查找,效率较高,思路清晰易懂。

    java二分查找算法

    #### 二、Java实现二分查找 下面基于给定的部分代码片段,详细介绍二分查找算法的具体实现。 #### 三、关键代码解析 给定代码中定义了一个名为`OrdArray`的类,该类实现了二分查找算法。其中的关键方法为`find()`,...

    文件读出数组进行选择排序和二分查找(java)

    5. **Test1.java**:这可能是一个实现上述功能的Java源代码文件,包含读取文件、处理数组、选择排序以及二分查找的逻辑。通过查看这个文件的源代码,可以学习到如何在实际项目中应用这些概念。 6. **使用前请看一下...

    Java二分查找示例代码

    下面我们将深入探讨Java实现二分查找的具体步骤、示例代码以及其应用场景。 一、二分查找原理 二分查找的基本思想是将数组分为两半,然后比较中间元素与目标值的关系。如果中间元素等于目标值,则查找成功;如果...

    Java二分查找递归算法

    Java二分查找递归算法

    二分查找的递归与非递归实现(java版)

    二分查找的递归与非递归实现(java版)

    Java 二分查找 算法

    Java 中实现二分查找的基本步骤如下: 1. 首先,设定查找区间的左右边界,通常为数组的第一个元素索引(0)和最后一个元素索引(数组长度减一)。 2. 计算中间索引,即 (左边界 + 右边界) / 2,确保结果为整数。 3....

    Java,二分查找,递归以及非递

    在Java中实现二分查找,我们可以采用递归或非递归两种方式。以下是对这两种方法的详细介绍: 1. **递归实现**: 递归方法通常更具概念性,它将问题分解为更小的子问题,直到达到基本情况。对于二分查找,我们首先...

    C和Java的二分查找代码实现

    C和Java的二分查找代码实现

Global site tag (gtag.js) - Google Analytics