博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找和遍历查找性能比较
阅读量:5218 次
发布时间:2019-06-14

本文共 2184 字,大约阅读时间需要 7 分钟。

一、查找类

/** * 查找算法 *  * @since 2016.09.06 * */public class BinarySearch {        /**     * 递归实现二分查找,返回该数字在数组中的索引     *      * @param array 数组     * @param startIndex 开始索引     * @param endIndex 结束索引     * @param need 需要查找索引的数字     * @return need数字在数组中的位置(即索引)     */    public static int getIndexFromArray(int[] array,int startIndex,int endIndex,int need){                if(array.length <= 0 || startIndex < 0 || endIndex < 0 || endIndex <= startIndex){            return -1;        }                int middleIndex = (startIndex + endIndex) / 2;                if(middleIndex > array.length - 1){            return -1;        }                if(need == array[middleIndex]){            return middleIndex;        }                if(need > array[middleIndex]){            startIndex = middleIndex;        }else{            endIndex = middleIndex;        }                return getIndexFromArray(array, startIndex, endIndex, need);            }        /**     * 遍历查找,返回该数字在数组中的索引     *      * @param array 数组     * @param need 需要查找索引的数字     * @return need数字在数组中的位置(即索引)     */    public static int getIndexFromListArray(int[] array,int need){        if(array.length <= 0){            return -1;        }        for(int j = 0;j < array.length;j++){            if(array[j] == need){                return j;            }        }        return -1;    }}

二、测试类

public class Test {        public static void main(String[] args) {                int size = 9000000;        int[] array = new int[size];                for(int i = 0;i < size;i++){            array[i] = i + 1;        }                int need = 8999999;                long s = System.currentTimeMillis();        int index = BinarySearch.getIndexFromArray(array, 0, array.length, need);        System.out.println("二分查找耗时:" + (System.currentTimeMillis() - s));                s = System.currentTimeMillis();        int indexRepeat = BinarySearch.getIndexFromListArray(array, need);        System.out.println("遍历查找耗时:" + (System.currentTimeMillis() - s));                System.out.println(index + " || " + indexRepeat);            }} 执行结果: 二分查找耗时:0 遍历查找耗时:5 8999998 || 8999998

 

转载于:https://www.cnblogs.com/wuq126/p/5846564.html

你可能感兴趣的文章
多次向文件结尾写入数据
查看>>
读书印记 - 《反脆弱》
查看>>
LAMP环境搭建
查看>>
puppet安装配置及使用
查看>>
better-scroll的使用
查看>>
条件DP UVA 672 Gangsters
查看>>
一个商业智能培训经理眼中的商业智能
查看>>
Quartz.Net 配置模板范例
查看>>
程序员怎样才能达到编程的最高境界
查看>>
H5混合开发中android终端和ios终端常见的兼容问题2
查看>>
红外接收头在内核里的驱动
查看>>
4. hadoop启动脚本分析
查看>>
HDU HDU1558 Segment set(并查集+判断线段相交)
查看>>
Windows Phone WebClient的使用
查看>>
Java 内部类
查看>>
mycat 分库分表
查看>>
爬虫-基于scrapy-redis两种形式的分布式爬虫
查看>>
模块_使用M2Crypto加密数据
查看>>
call和apply用途与使用方法
查看>>
函数预解析补充
查看>>