兩個有序陣列判斷存在相同元素
阿新 • • 發佈:2019-01-02
/**
* 判斷兩個有序陣列是否存在相同元素
* 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的長度