合并排序
//package com.nowjava; /** 来自 nowjava.com - 时代Java**/ public class Main { public static void mergeSort(Number[] A, int start, int end) { if (end - start < 1) return; int split = ((end - start) / 2) + start; mergeSort(A, start, split); mergeSort(A, split + 1, end); merge(A, start, end, split); } public static void merge(Number[] A, int start, int end, int split) { Number[] L = new Number[(split + 1) - start]; Number[] R = new Number[end - split]; /* from 时 代 J a v a 公 众 号 - nowjava.com */ for (int i = 0; i < L.length; i++) { L[i] = A[start + i]; } for (int i = 0; i < R.length; i++) { R[i] = A[split + 1 + i]; } int ri = 0; int li = 0; for (int i = start; i <= end; i++) { if (L[li].floatValue() <= R[ri].floatValue()) { A[i] = L[li]; li++; } else { A[i] = R[ri]; ri++; } if (li == L.length) { while (ri < R.length) { i++; A[i] = R[ri]; ri++; }