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);
}
}
}
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 记录文本文件日志方法
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
}
}