waltermilner

Untitled

Apr 24th, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.49 KB | None | 0 0
  1. /**
  2.      * Merge two ordered int arrays
  3.      * @param array1 an ordered int[]
  4.      * @param array2 another ordered int[]
  5.      * @return a new ordered array containing all distinct values from array1 and array2
  6.      */
  7.     static int[] merge(int[] array1, int[] array2) {
  8.         int[] result = new int[array1.length + array2.length];
  9.         int ptr1 = 0;
  10.         int ptr2 = 0;
  11.         int resultPtr = 0;
  12.         int val1, val2;
  13.         val1 = array1[ptr1];
  14.         val2 = array2[ptr2];
  15.         do {
  16.             if (val1 < val2) {
  17.                 result[resultPtr] = val1;
  18.                 resultPtr++;
  19.                 ptr1++;
  20.                 if (ptr1 < array1.length) {
  21.                     val1 = array1[ptr1];
  22.                 }
  23.             } else if (val2 < val1) {
  24.                 result[resultPtr] = val2;
  25.                 resultPtr++;
  26.                 ptr2++;
  27.                 if (ptr2 < array2.length) {
  28.                     val2 = array2[ptr2];
  29.                 }
  30.             } else {
  31.                 result[resultPtr] = val1;
  32.                 resultPtr++;
  33.                 ptr1++;
  34.                 if (ptr1 < array1.length) {
  35.                     val1 = array1[ptr1];
  36.                 }
  37.                 ptr2++;
  38.                 if (ptr2 < array2.length) {
  39.                     val2 = array2[ptr2];
  40.                 }
  41.             }
  42.         } while (ptr1 < array1.length && ptr2 < array2.length);
  43.         result = Arrays.copyOfRange(result, 0, resultPtr);
  44.         return result;
  45.  
  46.     }
Advertisement
Add Comment
Please, Sign In to add comment