归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
更多信息请参考:C语言代码:
1 #include2 #include 3 #include 4 #include 5 6 void init(int *array, int count) 7 { 8 int n = 0; 9 srand((unsigned int)time(NULL));10 11 for (n=0; n
运行结果如下:
data before sort: 50 91 73 42 84 88 9 57 18 35data after sort: 9 18 35 42 50 57 73 84 88 91Java代码:1 import java.util.Random; 2 3 /** 4 * 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列, 5 * 每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 6 */ 7 8 public class Sort 9 { 10 /* 11 * 输出数组中的数据 12 */ 13 public static void OutputArray(int[] array) 14 { 15 for (int data : array) 16 { 17 System.out.print(data + "\t"); 18 } 19 20 System.out.println(); 21 } 22 23 /* 24 * 生成需要排序的数组 25 */ 26 public static int[] createArray(int count) 27 { 28 int array[] = new int[count]; 29 Random r = new Random(); 30 31 for (int i = 0; i < count; i++) 32 { 33 array[i] = r.nextInt(100); 34 } 35 36 System.out.println(""); 37 System.out.print("data before sort:\t"); 38 39 OutputArray(array); 40 41 return array; 42 } 43 44 private static int[] merge_sort(int[] array, int start, int end) 45 { 46 int[] result = new int[end-start+1]; 47 if(start
排序结果如下:
data before sort: 39 27 27 7 6 41 82 36 89 20
data after sort: 6 7 20 27 27 36 39 41 82 89