using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Diagnostics; using System.IO; namespace Sort { class Program { static string ErrMsg = string.Empty; static void Main(string[] args) { string[] str = { "MergeSorter", "HeapSorter", "ShellSorter", "InsertSorter", "SelectSorter", "CockTailSorter", "BubbleSorter", "QuickSorter" }; foreach(string name in str) { int number =20000; for (int i = 0; i < 5;i++ ) { number = number + 20000; EfficiencyTest(number, 1,name); } } } //<生成随机数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 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; string str = Cname + "排序" + i + "个数" + j + "次所用平均时间为:" + span + " 毫秒"; WriteFile(str,"", out ErrMsg); } #region 记录文本文件日志方法 /// <summary> /// 记录文本文件日志方法 /// </summary> /// <param name="FileContent">需要记录的文件内容</param> /// <param name="TxtFileName">保存的文件名</param> /// <param name="ErrMsg">错误信息</param> /// <returns></returns> private static bool WriteFile(string FileContent, string TxtFileName, out string ErrMsg) { ErrMsg = string.Empty; StreamWriter writer = null; string sCurDate = System.DateTime.Now.ToString("yyyy-MM-dd"); string sFile = "D:\\Log\\Log001.txt"; try { if (File.Exists(sFile)) writer = new StreamWriter(sFile, true, System.Text.Encoding.GetEncoding("UTF-8")); else writer = new StreamWriter(sFile, false, System.Text.Encoding.GetEncoding("UTF-8")); string sDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"); writer.WriteLine("<" + sDateTime + "> " + " " + FileContent); } catch (IOException e) { ErrMsg = e.Message; return false; } finally { if (writer != null) writer.Close(); } return true; } #endregion } }排序算法大数据量测试结果
作者:jiankunking 出处:http://blog.csdn.net/jiankunking