日期:2014-05-20 浏览次数:20896 次
Zswang_0 开始运行 56 488 576 91 共耗时1141毫秒
using System; namespace ConsoleApplication1 { class Program { const int max = 1000; // 最大取值范围 //const int count = 5000; // 小数据量 const int count = 100000000; // 数据量 const int resultLen = 4; // 返回长度 static void Main(string[] args) { var random = new Random(2010); // 固定随机种子,确保大家测试数据一致 var data = new int[count]; #region 生成测试数据,不在性能计算之内 for (var i = 0; i < count; i++) data[i] = random.Next(max); #endregion 生成测试数据 #region 计算性能 Console.WriteLine("Zswang_0 开始运行"); var tick = Environment.TickCount; foreach (var i in Zswang_0(data, 4)) { Console.WriteLine(i); } Console.WriteLine("共耗时{0}毫秒", Environment.TickCount - tick); #endregion Console.ReadKey(); } // 作者_版本 static int[] Zswang_0(int[] data, int len) { // 计算每个数据出现的次数 var dict = new int[max]; for (var i = 0; i < count; i++) dict[data[i]]++; // 按出现的次数排序 var indexs = new int[max]; for (var i = 0; i < max; i++) indexs[i] = i; // 获得完整的序号 Array.Sort(indexs, delegate(int a, int b) { return dict[b] - dict[a]; }); /* for (var i = 0; i < 100; i++) { Console.WriteLine("{0}={1}", indexs[i], dict[indexs[i]]); } //*/ var result = new int[len]; for (var i = 0; i < len; i++) result[i] = indexs[i]; // 输出 return result; } } }