归并排序
package test;
import java.util.Arrays;
public class MergeSort {
private static int[] DUMMY = new int[]{3, 2, 5, 7, 11, 4, 6, 9};
private int[] data;
public MergeSort() {
this(DUMMY);
}
public MergeSort(int[] data) {
this.data = data;
}
/**
* 将两个有序数组合并;左边的数组从start到middle, 右边的数组从middle + 1 到 end
* @param start
* @param middle
* @param end
*/
public void mergeSort(int start, int middle, int end) {
int[] tmp = Arrays.copyOfRange(data, start, end + 1);
int refIndex = start;
int left = start - refIndex, _refMiddle = middle - refIndex;
int right = _refMiddle + 1;
int _refEnd = end - refIndex;
int count = 0;
while (left <= _refMiddle || right <= _refEnd) {
int nextValue;
if (left