Java零基础进阶篇之数组|数组的查找

本篇文章讲解的知识点主要围绕数组,废话不多说,只分享Java相关的干货!

二分法(折半法)查找

查找数组中的元素我们可以遍历数组中的所有元素,这种方式称为线性查找。线性查找适合与

小型数组,大型数组效率太低。如果一个数组已经排好序,那么我们可以采用效率比较高的二

分查找或叫折半查找算法。

见示例

假设,我们准备采用二分法取得 18 在数组中的位置

  • 第一步,首先取得数组 0~9 的中间元素

中间元素的位置为:(开始下标 0 + 结束下标 9/2=下标 4

通过下标 4 取得对应的值 15

18 大于 15,那么我们在后半部分查找

  • 第二步,取数组 4~9 的中间元素

4~9 的中间元素=(下标 4 + 1 +下标 9/2=下标 7

下标 7 的值为 18,查找完毕,将下标 7 返回即可

以上就是二分或折半查找法,此种方法必须保证数组事先是排好序的,这一点一定要注意

【示例代码】

public class BinarySearchTest01 {


    public static void main(String[] args) {
        int[] data = {11,12,13,14,15,16,17,18,19,20};
        int index = binarySearch(data, 18); 
        System.out.println(index);
    }


    //采用折半法查询,必须建立在排序的基础上
    private static int binarySearch(int[] data, int value) {
        //开始下标
        int beginPos = 0;
        //结束下标
        int endPos = data.length - 1;


        while (beginPos <=endPos) {
           int midPos = (beginPos + endPos)/2; 
           if (value == data[midPos]) {
                return midPos;
           }else if (value > data[midPos]) 
               { beginPos = midPos + 1;
           }else if (value < data[midPos]) 
               { endPos = midPos - 1;
           }
       }
       return -1;
    }
}

以上就是数组相关的知识点了,配套视频教程,正在学习Java的同学们一定要持续关注哦~~

Java零基础进阶视频教程

 

你可能感兴趣的:(Java学习资料,Java学习视频教程,Java学习者入门必备,二分法,算法,java,数据结构,python)