精华内容
下载资源
问答
  • 二分查找java

    2019-01-14 15:34:06
    二分查找算法:前提条件必须是一个有序队列数据 二分查找的时间复杂度: n/(2^m)=1 ==> m = log2(n)[表示以2为底n的对数] 另外我们会发现Arrays.binarySearch提供的查找排序算法使用的也是二分查找 ...

    二分查找算法:前提条件必须是一个有序队列数据

    二分查找的时间复杂度:

    n/(2^m)=1 ==> m = log2(n)[表示以2为底n的对数]

    另外我们会发现Arrays.binarySearch提供的查找排序算法使用的也是二分查找

    空间复杂度为:O(1)

     

    展开全文
  • 二分查找 Java

    2020-04-15 22:08:43
    二分查找 public static int binarySearch(int[] arr,int key) { int left = 0; int right = arr.length; int mid; while(left <= right) { mid = (left + right) / 2; ...

    二分查找

    public static int binarySearch(int[] arr,int key) {
            int left = 0;
            int right = arr.length;
            int mid;
            while(left <= right) {
                mid = (left + right) / 2;
                /**
                 * mid = (left + right) >>> 1;
                 * 无符号右移1位
                 */
                if(key < arr[mid]) {
                    right = mid - 1;
                }else if(key > arr[mid]) {
                    left = mid + 1;
                }else {
                    return mid;
                }
            }
            //没找到返回-1,数组的下标没有-1
            return -1;
        }
    
    展开全文
  • 二分查找 java

    2014-08-15 15:12:52
    二分查找又称折半查找,它是一种效率较高的查找方法。   【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 [java] view plaincopy /**   * 二分查找又称...

    二分查找又称折半查找,它是一种效率较高的查找方法。 
      【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。

    [java] view plaincopy
    1. /** 
    2.  * 二分查找又称折半查找,它是一种效率较高的查找方法。  
    3.   【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 
    4.  * @author Administrator 
    5.  * 
    6.  */  
    7. public class BinarySearch {   
    8.     public static void main(String[] args) {  
    9.         int[] src = new int[] {135789};   
    10.         System.out.println(binarySearch(src, 3));  
    11.         System.out.println(binarySearch(src,3,0,src.length-1));  
    12.     }  
    13.   
    14.     /** 
    15.      * * 二分查找算法 * * 
    16.      *  
    17.      * @param srcArray 
    18.      *            有序数组 * 
    19.      * @param des 
    20.      *            查找元素 * 
    21.      * @return des的数组下标,没找到返回-1 
    22.      */   
    23.    public static int binarySearch(int[] srcArray, int des){   
    24.       
    25.         int low = 0;   
    26.         int high = srcArray.length-1;   
    27.         while(low <= high) {   
    28.             int middle = (low + high)/2;   
    29.             if(des == srcArray[middle]) {   
    30.                 return middle;   
    31.             }else if(des <srcArray[middle]) {   
    32.                 high = middle - 1;   
    33.             }else {   
    34.                 low = middle + 1;   
    35.             }  
    36.         }  
    37.         return -1;  
    38.    }  
    39.         
    40.       /**   
    41.      *二分查找特定整数在整型数组中的位置(递归)   
    42.      *@paramdataset   
    43.      *@paramdata   
    44.      *@parambeginIndex   
    45.      *@paramendIndex   
    46.      *@returnindex   
    47.      */  
    48.     public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){    
    49.        int midIndex = (beginIndex+endIndex)/2;    
    50.        if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){  
    51.            return -1;    
    52.        }  
    53.        if(data <dataset[midIndex]){    
    54.            return binarySearch(dataset,data,beginIndex,midIndex-1);    
    55.        }else if(data>dataset[midIndex]){    
    56.            return binarySearch(dataset,data,midIndex+1,endIndex);    
    57.        }else {    
    58.            return midIndex;    
    59.        }    
    60.    }   
    61.   
    62. }  


    展开全文
  • public int binSearch(int[] nums,int key ,int left ,int right){ if(left > right) return -1; mid = (right - left) >>1 + left; if(key < nums[mid]) return binSearch(nums,key,left,mid-1);...
  • 二分查找Java实现

    2020-03-22 17:18:36
    1.二分查找Java实现 package Test00; //二分查找 /* 二分查找又叫做折半查找,要求查找的序列有序,每次查找都取中间位置的值与待查的位置的值比较,如果中间的值比 待查的数值大,则在序列的左半部分继续查找;...

    二分查找Java实现

    package Test00;
    //二分查找
    /*
       二分查找又叫做折半查找,要求查找的序列有序,每次查找都取中间位置的值与待查的位置的值比较,如果中间的值比
       待查的数值大,则在序列的左半部分继续查找;反之,在右半部分查找。直到查找到关键字位置。
       如果没有查找到,则返回-1
    * */
    public class binarySearch {
        public static int binarySearch(int[] arr,int a){
            //定义查找函数
            int low=0;
            int high=arr.length-1;
            int mid;//定义中间值
            while (low<=high){
                //判断循环的条件
                mid=(low+high)/2;
                if (arr[mid]==a){
                    return mid;//返回查找到的值得位置
                }else if (a>arr[mid]){
                    //向右查找
                    low=mid+1;
                }else {
                    //向左查找
                    high=mid-1;
                }
            }
            /* 如果没有找到  返回-1 */
            return -1;
        }
    
        public static void main(String[] args) {
            int[] arr=new int[]{3,4,6,20,40,45,51,62,70,99,110};
            int result = binarySearch(arr, 99);
            System.out.println(result);
        }
    
    }
    
    

    运行结果:

    "C:\Program Files (x86)\Java\jdk1.8.0_172\bin\java.exe" -javaagent:D:\ideaIU-2018.1.5.win\lib\idea_rt.jar=53752:D:\ideaIU-2018.1.5.win\bin -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_172\jre\lib\rt.jar;D:\TestDemo\out\production\TestDemo" Test00.binarySearch
    9
    
    Process finished with exit code 0
    
    

    返回需要查找的99的索引位置,为9。
    注意:数组组下标从0开始

    展开全文
  • 二分查找java代码 package csdn.dreamzuora.query; /** * Title: 二分查找 * Description: * 时间复杂度:log2N * @version 1.0 * @author: weijie * @date: 2020/10/16 13:52 */ public class BinarySearch...
  • 目录1、前言2、动图演示3、代码描述4、二分查找中值的计算5、二分查找法的缺陷来源:cnblogs.com/morethink/p/8379475.html1、前言二分查找(binary search),也称折半搜索,是一种在有序数组中查找某一特定元素的...
  • 什么是二分查找?二分查找(binary search)又叫折半查找,它是一种在有序数组中查找某一特定元素的搜索算法。二分查找必要条件?必须为顺序存储结构;必须按关键字大小有序排列。二分查找原理使用二分查找算法找出...
  • 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查找思路非常简单,由粗暴的遍历查找改为了将元素排序后...
  • 二分查找的前提是:你得先排好序,但是排序问题不在讨论。直接上代码:import java.util.Optional;public class MyArray {public static void main(String[]args) {int[] arr = new int[]{1,2,3};for (int i = 0; i ...
  • 二分查找算法每次查找取数组中位数的值进行比较,如果目标值值大于中位数的值,则截取中位数右侧的数组再次进行二分查找如果目标值小于中位数的值,则截取中位数左侧的数组再次进行二分查找直到找到相对应的中位数才...
  • java两种方式实现二分查找1.while循环实现2.递归实现二分查找是什么?​二分查找,又名折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这...
  • 假设我们在词典中查找一个k开头的单词,...其实这就是一个查找问题,上面第二种方法就是 二分查找我们再举一个例子: 我自己随便想一个 1-100 之间的数字,然后让你来猜,你每次猜测之后我都会告诉你,猜大了还是猜...
  • 1.二分查找步骤描述(1)首先确定整个查找区间的中间位置 mid = ( left + right )/ 2(2)用待查关键字值与中间位置的关键字值进行比较;若相等,则查找成功若大于,则在后(右)半个区域继续进行折半查找若小于,则在前...
  • package com.yulong; public class BinarySearch { /** * @param args */ public static void main(String[] args) { int key=1; // TODO Auto-generated method stub int[] array={23,34,56,67,78...
  • 这篇文章主要介绍了Java二分查找算法实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下二分查找:两种方式:非递归方式和递归方式主要思路:对于已排序...
  • 二分查找java实现

    2015-08-20 11:37:36
    二分查找java实现 public class BinarySearch { public static void main(String[] args) { int [] a={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; BSearch(a,100); } private static void BSearch(int [] a ,...
  • 【JAVA】PAT 1060 爱丁顿数 二分查找JAVA版二分查找代码:AC代码(二分查找):遍历数组完整AC代码: 题目链接 英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足...
  • Java 线性查找和二分查找 public class Test{ public static void main{} //二分查找 public static void binarysearch(int[] binarysearch,int searchnum) { // 遍历数组 System.out.print("binary search:")...
  • 二分查找JAVA实现

    2013-04-04 22:48:55
    二分查找 折半查找
  • import java.lang.reflect.Array;import java.nio.Buffer;import java.util.Arrays;import java.util.Random;//=================================================// File Name :RecFind//------------------...
  • /**二分查找输入查找值,返回查找值的数组下标(查找的数组arr,数组的开头start,数组的结尾end,查找的值key)*先判断输入的start(开头)是否比end(结尾)大,如果比end(结尾)大返回-1;*在以上的大范围之下,最先的是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,923
精华内容 2,769
关键字:

二分查找java

java 订阅