两个有序数组判断存在相同元素

来源:互联网 发布:2017双十一消费数据 编辑:程序博客网 时间:2024/05/29 02:06
/** * 判断两个有序数组是否存在相同元素 * Created by sx on 2017/12/15. */public class hasSameElement {     static boolean  is_has_same_element(int[]  arry1,int[] arry2)    {        //边界判断        if(arry1.length==0 || arry2.length ==0)  return  false;        // 遍历数组1,二分查找数组2        for (int i = 0; i <arry1.length ; i++) {            int num = arry1[i];            if(bs(arry2,0,arry2.length-1,num))            {                System.out.println("数组1位置:"+i);                return  true;            }        }        return  false;    }    // 二分查找    static boolean  bs(int[]  arry,int start,int end,int key)    {        if(start>end)  return  false;        int middle =(start + end) >>> 1;  //int middle =  (start+end)/2;        if(key==arry[middle])        {            System.out.println("数组2位置:"+middle);            return  true;        }        if(key<arry[middle])  return  bs(arry,start,middle-1,key);        if(key>arry[middle])  return  bs(arry,middle+1,end,key);        return false;    }    public static void main(String[] args) {        int arry1[]  = {3,5,7,8};        int arry2[]  = {1,8};    // 两个有序数组        System.out.println(is_has_same_element(arry1,arry2));    }}

二分查找时间复杂度为 logn,总的时间复杂度为 mlogn m\n 分别为数组1数组2的长度

原创粉丝点击