排序算法大数据量测试代码
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
}
}
以上就是 排序算法大数据量测试代码的内容。
