Home  >  Article  >  Backend Development  >  Sorting algorithm large data volume test code

Sorting algorithm large data volume test code

黄舟
黄舟Original
2017-02-09 16:27:121573browse

 排序算法大数据量测试代码

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
    }
}

以上就是 排序算法大数据量测试代码的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn