static void Main(string[] args) { var mergeSortX = new MergeSortX(); var a = new int[] { 1, 3, 5, 7, 9, 2, 4, 6, 8 }; mergeSortX.Sort(a); for (var i = 0; i < a.Length; i++) { Console.Write(a[i] + " "); } Console.WriteLine(); }
static void Main(string[] args) { var mergeSort = new MergeSort(); var mergeSortX = new MergeSortX(); var mergeSortUnstable = new MergeSortUnstable(); var n = 1000000; var cutoff = 2; var trialTime = 4; Console.WriteLine("归并排序改进前与改进后的比较:"); Console.WriteLine("数组\t耗时1\t耗时2\t阈值\t比率"); for (var i = 0; i < 20; i++) { double mergeSortTime = 0; double mergeSortXTime = 0; mergeSortX.SetCutOff(cutoff); for (var j = 0; j < trialTime; j++) { var a = SortCompare.GetRandomArrayInt(n); var b = new int[a.Length]; a.CopyTo(b, 0); mergeSortTime += SortCompare.Time(mergeSort, a); mergeSortXTime += SortCompare.Time(mergeSortX, b); } mergeSortTime /= trialTime; mergeSortXTime /= trialTime; Console.WriteLine(n + "\t" + mergeSortTime + "\t" + mergeSortXTime + "\t" + cutoff + "\t" + mergeSortTime / mergeSortXTime); cutoff++; } n = 100000; Console.WriteLine("稳定归并排序与不稳定版本的比较:"); Console.WriteLine("数组\t耗时1\t耗时2\t比率"); for (var i = 0; i < 6; i++) { double mergeSortTime = 0; double mergeSortUnstableTime = 0; for (var j = 0; j < trialTime; j++) { var a = SortCompare.GetRandomArrayInt(n); var b = new int[a.Length]; a.CopyTo(b, 0); mergeSortTime += SortCompare.Time(mergeSort, a); mergeSortUnstableTime += SortCompare.Time(mergeSortUnstable, b); } mergeSortTime /= trialTime; mergeSortUnstableTime /= trialTime; Console.WriteLine(n + "\t" + mergeSortTime + "\t" + mergeSortUnstableTime + "\t" + mergeSortTime / mergeSortUnstableTime); n *= 2; } }