美文网首页
数据查找之二分查找

数据查找之二分查找

作者: 鲁克巴克诗 | 来源:发表于2016-09-28 13:54 被阅读12次

今天上午闲来无事,重温了一遍数组,接触到一种从来没有用过的查询方式:二分查找,也称折半查找。

Paste_Image.png

初次看到这个二分查找,不明其意,主要是我笨。于是为了弄懂它,我去搜索了。

Paste_Image.png

不得不说。搜索还是有用的,也让我知道二分查找的优点,查找速度会比遍历更快!但是它也有着致命的缺点。

要求顺序存储结构且必须按照关键字大小有序排列。

好了,虽然它有缺点,但是对于符合条件的数组或者集合来说还是很有用的。

下面我决定做一个测试,来验证它是否比普通遍历更快!

//这是普通的遍历方法
public int find(int value) {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == value) {
                return i;
            }
        }
        return -1;
    }
// 二分查找方法
    public int findByHalf(int value) {
        int start = 0;
        int end = array.length;
        while (end >= start) {
            int index = (start + end) / 2;
            if (array[index] == value) {
                return index;
            } else if (array[index] > value) {
                end = index - 1;

            } else if (array[index] < value) {
                start = index + 1;
            }
        }
        return -1;
    }
public static void main(String[] args) {
        //new对象并给数组插入数据
        UseArray ua = new UseArray();
        for (int i = 1; i <= ua.max; i++) {
            ua.insert(i);
        }

        long beginTime1 = System.currentTimeMillis();
        ua.find(5);//普通查找
        long endTime1 = System.currentTimeMillis();
        long beginTime2 = System.currentTimeMillis();
        ua.findByHalf(5);//二分查找
        long endTime2 = System.currentTimeMillis();

        System.out.println("遍历查找所用时间: " + (endTime1 - beginTime1)
                + " 二分查找所用时间: " + (endTime2 - beginTime2));

    }

结果是:

Paste_Image.png

可见二分查找还是挺不错的!项目中有机会的我一定会用的!

相关文章

  • 数据查找之二分查找

    今天上午闲来无事,重温了一遍数组,接触到一种从来没有用过的查询方式:二分查找,也称折半查找。 初次看到这个二分查找...

  • 可查找重复元素的二分查找算法

    可查找重复元素的二分查找算法 二分查找算法思想:又称为 折半查找,二分查找适合对已经排序好的数据集合进行查找。假设...

  • 算法和数据结构3.2二分查找

    二分查找也是一种在数组中查找数据的方法。它只能查找已经排好序的数据。 二分查找通过比较数组中间的数据与目标数据的大...

  • 查找算法之二分查找

    二分查找也叫折半查找,前提是查找序列是有序的,它是一种效率较高的查找算法,时间复杂度为O(log2n)。常见的电路...

  • 算法(一)查找算法 平衡二叉树,红黑树,B树等

    顺序查找 略 折半查找 折半查找,也称二分查找,在某些情况下,折半查找比顺序查找效率更高(要求静态查找表中数据必须...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 二分查找(上):如何用最省内存的方式实现快速查找功能?

    二分查找(上):如何用最省内存的方式实现快速查找功能? 注意,二分查找(也叫折半查找)是针对有序数据集合的查找算法...

  • 二叉搜索树、平衡二叉树

    -二叉搜索树 查找问题:静态查找和动态查找,静态查找可以用二分查找-判定树,那么针对动态查找数据如何组织?(树的动...

  • Swift语言实现几个简单算法

    栈队列二分查找插入排序归并排序快速排序 栈 队列 二分查找 二分查找是用于快速查找到目标数据(已排序)的一种查找方...

  • 二分查找

    二分查找的核心思路 二分查找,也叫折半查找。是针对有序数据的一种快速查找算法。 二分查找的思想非常简单,就是在区间...

网友评论

      本文标题:数据查找之二分查找

      本文链接:https://www.haomeiwen.com/subject/kzihyttx.html