using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Diagnostics; namespace Sort { class Program { static void Main(string[] args) { //Test(5); EfficiencyTest(100000,10,"BubbleSorter"); } //<生成随机数GenerateRandomNumber> public static List<int> GenerateRandomNumber(int Length) { List<int> newRandom = new List<int>(); Random rd = new Random(); for (int i = 0; i < Length; i++) { newRandom.Add(rd.Next()); } return newRandom; } //测试排序算法的正确性 private static void Test(int n) { int[] de = GenerateRandomNumber(n).ToArray(); Console.WriteLine("排序前:"); foreach (int dee in de) { Console.WriteLine(dee); } //int[] d = MergeSorter.Sort(de); //int[] d=HeapSorter.Sort(de); //int[] d = ShellSorter.Sort(de); //int[] d = InsertSorter.Sort(de); //int[] d = SelectSorter.Sort(de); //int[] d = CockTailSorter.Sort(de); int[] d = BubbleSorter.Sort(de); Console.WriteLine("排序后:"); foreach (int dee in d) { Console.WriteLine(dee); } //Console.ReadKey(); } //测试各个排序算法效率 //调用Name函数排序i个数j次 private static void EfficiencyTest(int i,int j,string Name) { double AverageTime = 0; ; string Cname = null; for (int n = 0; n < j;n++) { int[] de = GenerateRandomNumber(i).ToArray(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); DateTime dateStart = DateTime.Now; switch(Name) { case "MergeSorter": MergeSorter.Sort(de); Cname = "MergeSorter"; break; case "HeapSorter": HeapSorter.Sort(de); Cname = "HeapSorter"; break; case "ShellSorter": ShellSorter.Sort(de); Cname = "ShellSorter"; break; case "InsertSorter": InsertSorter.Sort(de); Cname = "InsertSorter"; break; case "SelectSorter": SelectSorter.Sort(de); Cname = "SelectSorter"; break; case "CockTailSorter": CockTailSorter.Sort(de); Cname = "CockTailSorter"; break; case "BubbleSorter": BubbleSorter.Sort(de); Cname = "BubbleSorter"; break; case "QuickSorter": QuickSorter.Sort(de); Cname = "QuickSorter"; break; } stopwatch.Stop(); AverageTime = (DateTime.Now - dateStart).TotalMilliseconds; } Double span = AverageTime / j; Console.WriteLine(Cname + "排序" + i + "个数" + j + "次所用平均时间为:" + span + " 毫秒"); Console.ReadKey(); } } }