/* 1、算法思想 : 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用,归并排序将两个已经有序的序列合并成一个有序的序列。 * 2、算法流程 * 主要两步(分,合) * 步骤1进行序列拆分,这是一递归的操作,通常是分到只剩一个元素。(一个元素必定是有序的) * 步骤2对排好序的序列合并。 * 思路:假设我们有一个没有排好序的序列,那么我们首先使用分割的方法将这个序列分割成一个个已经排好序的子序列(直到剩下一个元素)。然后再利用归并的方法将一个个有序的子序列合并成排好序的序列。 */ public static int[] MergeSort(int[] arr) { return(MergeHelper2.Sort(arr)); MergeHelper mh = new MergeHelper(arr); mh.Sort(); return(mh.BaseArr); }
public MergeHelper(int[] arr) { if (arr.Length > 2) { var arr1 = arr.Take(arr.Length / 2).ToArray(); m1 = new MergeHelper(arr1); var arr2 = arr.Skip(arr.Length / 2).ToArray(); m2 = new MergeHelper(arr2); } else { BaseArr = arr; } }