zoukankan      html  css  js  c++  java
  • Algs4-1.4.12找出两个有序数组的公共元素-方法1

    1.4.12编写一个程序,有序打印给定的两个有序数组(含有N个int值)中的所有公共元素,程序在最坏情况下所需的运行时间应该和N成比。
    答:
    图片
    import java.util.Arrays;
    public class TheSameElement
    {
      public static void main(String[] args)
      {
         int[] a1=In.readInts(args[0]);
         int[] a2=In.readInts(args[1]);
         Arrays.sort(a1);
         Arrays.sort(a2);
         int a1lo=0;
         int a2lo=0;
         int a2KeyIndex=0;
         while (a1lo<a1.length && a2lo<a2.length)
         {
           a1lo=rankMax(a1,a1lo,a1.length-1,a1[a1lo]);
           a2KeyIndex=rankMax(a2,a2lo,a2.length-1,a1[a1lo]);
           if(a2KeyIndex!=-1)
           {
             StdOut.println(a1[a1lo]);
             a2lo=a2KeyIndex+1;
           }
           a1lo++;
         }
        
      }
     
       private static int rankMax(int[] a,int lo,int hi,int key)
      {
        int keyIndex=-1;
        while(lo<=hi)
        {
          int mid=lo+(hi-lo)/2;
          if (key<a[mid]) hi=mid-1;
          else if(key>a[mid]) lo=hi+1;
          else
          {
            keyIndex=mid;
            lo=mid+1;
          }//end if
        }//end while
          return keyIndex;
    }//end rankMax
    }

  • 相关阅读:
    Singleton模式
    Factory模式
    AbstactFactory模式
    Maven的介绍及使用
    MySQL索引分析及使用
    Runnable接口和Callable接口的区别
    Java中的常见数学运算
    mkdir()和mkdirs()区别
    面试小问题——Object中有哪些常用方法?
    面试小问题——什么是多态?
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854418.html
Copyright © 2011-2022 走看看