Advertisement
Guest User

Untitled

a guest
May 31st, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.08 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class Arrays
  3. {
  4.  public static void clearScreen()
  5.     {
  6.       System.out.print('\u000C');
  7.     }
  8.  public static int equal (Integer a[], int b[])
  9. {
  10.     mergeSort(a);
  11.     int i=0;
  12.     int ans=-1;
  13.     do
  14.     {
  15.         int target = b[i]+b[i+1];
  16.         ans=binarySearch(a,target);
  17.         i++;
  18.         if(ans==1)
  19.         return 1;
  20.         else
  21.         return -1;
  22.     }
  23.     while (ans=-1);
  24.        
  25.     return -1 ;
  26. }
  27.   public static int binarySearch (Integer []a, int target)
  28.  {
  29.     boolean found = false;
  30.     int lo = 0;
  31.     int hi = a.length-1;
  32.     int mid = 0;
  33.     while(lo<=hi&&!found)
  34.     {
  35.         mid=(lo+hi)/2;
  36.         if(a[mid]==target)
  37.             found=true;
  38.         else
  39.         {
  40.             if(target>a[mid])
  41.                 lo=mid+1;
  42.             else
  43.                 hi=mid-1;
  44.         }
  45.     }
  46.     if(found)
  47.         return 1;
  48.     else
  49.         return -1;
  50.     }
  51.     public static void mergeSort(Comparable [ ] a)
  52.     {
  53.         Comparable[] tmp = new Comparable[a.length];
  54.         mergeSort(a, tmp,  0,  a.length - 1);
  55.     }
  56.  
  57.  
  58.     private static void mergeSort(Comparable [ ] a, Comparable [ ] tmp, int left, int right)
  59.     {
  60.         if( left < right )
  61.         {
  62.             int center = (left + right) / 2;
  63.             mergeSort(a, tmp, left, center);
  64.             mergeSort(a, tmp, center + 1, right);
  65.             merge(a, tmp, left, center + 1, right);
  66.         }
  67.     }
  68.  
  69.  
  70.     private static void merge(Comparable[ ] a, Comparable[ ] tmp, int left, int right, int rightEnd )
  71.     {
  72.         int leftEnd = right - 1;
  73.         int k = left;
  74.         int num = rightEnd - left + 1;
  75.  
  76.         while(left <= leftEnd && right <= rightEnd)
  77.             if(a[left].compareTo(a[right]) <= 0)
  78.                 tmp[k++] = a[left++];
  79.             else
  80.                 tmp[k++] = a[right++];
  81.  
  82.         while(left <= leftEnd)    // Copy rest of first half
  83.             tmp[k++] = a[left++];
  84.  
  85.         while(right <= rightEnd)  // Copy rest of right half
  86.             tmp[k++] = a[right++];
  87.  
  88.         // Copy tmp back
  89.         for(int i = 0; i < num; i++, rightEnd--)
  90.             a[rightEnd] = tmp[rightEnd];
  91.     }
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement