排序演算法大資料量測試代碼
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 }}
以上就是 排序演算法大資料量測試代碼的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!