Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Merge two ordered int arrays
- * @param array1 an ordered int[]
- * @param array2 another ordered int[]
- * @return a new ordered array containing all distinct values from array1 and array2
- */
- static int[] merge(int[] array1, int[] array2) {
- int[] result = new int[array1.length + array2.length];
- int ptr1 = 0;
- int ptr2 = 0;
- int resultPtr = 0;
- int val1, val2;
- val1 = array1[ptr1];
- val2 = array2[ptr2];
- do {
- if (val1 < val2) {
- result[resultPtr] = val1;
- resultPtr++;
- ptr1++;
- if (ptr1 < array1.length) {
- val1 = array1[ptr1];
- }
- } else if (val2 < val1) {
- result[resultPtr] = val2;
- resultPtr++;
- ptr2++;
- if (ptr2 < array2.length) {
- val2 = array2[ptr2];
- }
- } else {
- result[resultPtr] = val1;
- resultPtr++;
- ptr1++;
- if (ptr1 < array1.length) {
- val1 = array1[ptr1];
- }
- ptr2++;
- if (ptr2 < array2.length) {
- val2 = array2[ptr2];
- }
- }
- } while (ptr1 < array1.length && ptr2 < array2.length);
- result = Arrays.copyOfRange(result, 0, resultPtr);
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment