Here you can find the source of merge(T[] array, T[] temp, int left, int middle, int right)
private static <T extends Comparable<? super T>> void merge(T[] array, T[] temp, int left, int middle, int right)
//package com.java2s; /**/*w w w . j ava 2 s. c o m*/ * Copyright (c) 2014-2016 by Wen Yu. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Any modifications to this file must keep this entire header intact. * * Change History - most recent changes go on top of previous changes * * ArrayUtils.java * * Who Date Description * ==== ========= ====================================================================== * WY 14Jun2015 Bug fix for toNBits() to use long data type internally * WY 04Jun2015 Rewrote all concatenation related methods * WY 02Jun2015 Bug fix for generic concatenate methods * WY 06Apr2015 Added reverse(byte[]) to reverse byte array elements * WY 06Jan2015 Added reverse() to reverse array elements * WY 10Dec2014 Moved reverseBits() from IMGUtils to here along with BIT_REVERSE_TABLE * WY 08Dec2014 Fixed bug for flipEndian() with more than 32 bit sample data * WY 07Dec2014 Changed method names for byte array to other array types conversion * WY 07Dec2014 Added new methods to work with floating point TIFF images * WY 03Dec2014 Added byteArrayToFloatArray() and byteArrayToDoubleArray() * WY 25Nov2014 Added removeDuplicates() to sort and remove duplicates from int arrays * WY 12Nov2014 Changed the argument sequence for flipEndian() * WY 11Nov2014 Changed flipEndian() to include scan line stride to skip bits * WY 11Nov2014 Added toNBits() to convert byte array to nBits data unit * WY 28Oct2014 Added flipEndian() to work with TIFTweaker mergeTiffImagesEx() */ public class Main { private static <T extends Comparable<? super T>> void merge(T[] array, T[] temp, int left, int middle, int right) { // Copy both parts into the temporary array for (int i = left; i <= right; i++) { temp[i] = array[i]; } int i = left; int j = middle + 1; int k = left; while (i <= middle && j <= right) { if (temp[i].compareTo(temp[j]) <= 0) { array[k] = temp[i]; i++; } else { array[k] = temp[j]; j++; } k++; } while (i <= middle) { array[k] = temp[i]; k++; i++; } } private static void merge(int[] array, int[] temp, int left, int middle, int right) { // Copy both parts into the temporary array for (int i = left; i <= right; i++) { temp[i] = array[i]; } int i = left; int j = middle + 1; int k = left; while (i <= middle && j <= right) { if (temp[i] <= temp[j]) { array[k] = temp[i]; i++; } else { array[k] = temp[j]; j++; } k++; } while (i <= middle) { array[k] = temp[i]; k++; i++; } } }