可能微挫..呵呵..不过很开心...哈哈... import java.util.Random; public class CombineSort { public static void combine(int [] array, int p, int r, int q){ int [] b = new int[r - p + 1], c = new int [q - r]; for(int i = 0; i != r - p + 1; ++i){ b[i] = array[i + p]; } for(int i = 0; i != q - r; ++i){ c[i] = array[i + r + 1]; } int i = 0, j = 0, k = 0; for(; i != q - p + 1 && j != r - p + 1 && k != q - r; ++i){ array[i + p] = (b[j] < c[k]) ? b[j++]:c[k++]; } for(;i != q - p + 1 && j != r - p + 1; ++i, ++j) array[i + p] = b[j]; for(;i != q - p + 1 && k != q - r; ++i, ++k) array[i + p] = c[k]; } public static void sort(int [] array, int p, int q){ if(p >= q) return; int r = (p + q) / 2; sort(array, p, r); sort(array, r + 1, q); combine(array, p, r, q); } public static void main(String [] args){ Random rand = new Random(); int [] array = new int [30]; System.out.println("The original array is:"); for(int i = 0; i != array.length; ++i){ array[i] = rand.nextInt(99); System.out.print(array[i] + " "); if((i + 1) % 10 == 0) System.out.println(); } sort(array, 0, array.length - 1); System.out.println("The sorted array is:"); for(int i = 0; i != array.length; ++i){ System.out.print(array[i] + " "); if((i + 1) % 10 == 0) System.out.println(); } } }