1. 程式人生 > >兩個有序陣列判斷存在相同元素

兩個有序陣列判斷存在相同元素

/**
 * 判斷兩個有序陣列是否存在相同元素
 * 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的長度