Java实现二分查找

作者:未知 / 来源:网络 / 整理:脚本之家如果知识不能与人分享,这不算是真正的知识了。
public class BinarySearch { /** * 二分查找算法 * * @param srcArray 有序数组 * @param key 查找元素 * @return key的数组

Java实现二分查找

脚本之家收集整理这篇Java实现二分查找内容希望可以帮到你。

public class BinarySearch { 
        /** 
        * 二分查找算法 
        * 
        * @param srcArray 有序数组 
        * @param key 查找元素 
        * @return key的数组下标,没找到返回-1 
        */  
        public static void main(String[] args) { 
            int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};   
            System.out.println(binSearch(srcArray,0,srcArray.length - 1,81));  
        } 

        // 二分查找递归实现   
        public static int binSearch(int srcArray[],int start,int end,int key) {   

            int mid = (end - start) / 2 + start;   
            if (srcArray[mid] == key) {   
                return mid;   
            }   
            if (start >= end) {   
                return -1;   
            } else if (key > srcArray[mid]) {   
                return binSearch(srcArray,mid + 1,end,key);   
            } else if (key < srcArray[mid]) {   
                return binSearch(srcArray,start,mid - 1,key);   
            }   
            return -1;   
        } 

        // 二分查找普通循环实现   
        public static int binSearch(int srcArray[],int key) {   
            int mid = srcArray.length / 2;   
            if (key == srcArray[mid]) {   
                return mid;   
            }   

            int start = 0;   
            int end = srcArray.length - 1;   
            while (start <= end) {   
                mid = (end - start) / 2 + start;   
                if (key < srcArray[mid]) {   
                   end = mid - 1;   
                } else if (key > srcArray[mid]) {   
                    start = mid + 1;   
                } else {   
                    return mid;   
                }   
            }   
            return -1;   
        } 
    }

总结

以上是脚本之家为你收集整理的Java实现二分查找全部内容,希望找个程序文章能够帮你解决所遇到的程序开发困惑。

如果觉得脚本之家网站还不错,麻烦将脚本之家网站推荐给好友。

你可能在找的问题:

Java教程

简单认识SLF4J

SLF4J JAVA简易日志门面【SimpleLoggingFacadeforJava,缩写SLF4J】 宏观定义:一套包装Logging框架的界面程式,以外观模式实现

Java教程

Semaphore源码分析-java8

1.特性分析 Semaphore就是一个计数的信号量 每一个线程在获取资源前,必须从semaphore获取许可,这保证了一定有可用的资源。

Java教程

java中的12个原子操作类

1.简介 JDK1.5开始提供了java.util.concurrent.atomic包,这个包中的原子类提供了一种用法简单、性能高效、线程安全的更新变量的方式。

Java教程

JDK中涉及的设计模式总结

所有的设计模式都找了一种JDK中的实现(并未列出所有,原因是太多,而且本次整理的目的是通过JDK中的实例完成设计模式的梳理和记忆,所以只写一种实现)。依次对类,对应的方法,功能进行介绍。

赞助商

  • 友情链接:微信小游戏
  • 微信扫一扫

    微信扫一扫

    微信扫一扫,分享到朋友圈

    标题
    返回顶部