/**
* 判断两个有序数组是否存在相同元素
* 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 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(keyreturn 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的长度