当前位置: 代码迷 >> .NET面试 >> 和JAVA版的大斑竹吵架了,小弟我代表C#版来拿排序算法第一行不?大家去支援小弟我!
  详细解决方案

和JAVA版的大斑竹吵架了,小弟我代表C#版来拿排序算法第一行不?大家去支援小弟我!

热度:39   发布时间:2016-05-04 21:47:43.0
和JAVA版的大斑竹吵架了,我代表C#版来拿排序算法第一行不?大家去支援我!~!
我代表C#版来拿第一行不?

http://topic.csdn.net/u/20080623/14/23ab6317-1179-4c24-bb41-39b2d00697d5.html?seed=1910952138
规则如下: 
1 数据量为10万(好的算法可以到100万),从小到大排序 
2 数据采用如下代码产生,保证测试数据的唯一性 
3 不限制内存的使用 
4 最后将在不同用户的同一台机器上进行多次测试,以运行时间为标准,越少越好。 
5 如果速度太快,就使用 System.nanoTime(); 进行判断或者加大数据量到100万,甚至1000万数量级进行判断。 
6 评委暂定为java版的几位小版主 

参加方法 
1 直接把代码回复在后面即可 
2 截至日期为本周5的晚上 
3 奖励前5名,第一名400技术专家分,第二名200技术专家分,3、4、5名每人100技术专家分。 
4 前2名,允许个人介绍,求职,个人作品宣传的帖子大版置顶3天。 

初始化代码如下。 

Java codeimport java.util.Random;

class T {
  public static void main(String[] args) {
  int MAX = 100000;
  int[] nums = new int[MAX];
  Random r = new Random(20080623);
  for (int i = 0; i < MAX; i++) {
  nums[i] = r.nextInt(MAX);
  }
  long begin = System.currentTimeMillis();
  sort(nums);
  long end = System.currentTimeMillis();
  System.out.println((end - begin)); // 以这个时间为标准,越小越好。
  }

  public static int[] sort(int[] nums) {
  // 您的排序代码放在这里啦
  return nums;
  }
}

理论上,任何排序都可以在时间复杂度为O(n),空间复杂度为O(1)。
我的代码

using System;

namespace ConsoleApplication1
{
  class Program
  {
  static int MaxRange = 20080623;
  static void Main(string[] args)
  {
  Test(10*10000);
  Console.Read();
  Test(100*10000);
  Console.Read();
  Test(1000*10000);
  Console.Read();
  }
  public static void Test(int MAX)
  {  
  int[] nums = new int[MAX];
  Random r = new Random(MaxRange);
  for (int i = 0; i < MAX; i++)
  {
  nums[i] = r.Next(MAX);
  }
  long begin = System.DateTime.Now.Ticks;
  Sort(nums);
  long end = System.DateTime.Now.Ticks;
  Console.WriteLine("总共" + MAX/10000 + "万数据,用时" + System.TimeSpan.FromTicks(end - begin).Milliseconds + "豪秒");  
  }

  public static void Sort(int[] a)
  {

  int[] p = new int[MaxRange + 1];
  for (int i = 0; i <= MaxRange; i++)
  {
  p[i] = 0;
  }
  for (int i = 0; i <a.Length; i++)
  {
  p[a[i]]++;
  }
  for (int i = 0, j = 0; i <= MaxRange; i++)
  {
  while (p[i] > 0)
  {
  a[j++] = i;
  p[i]--;
  }
  }
   
  }


  }
}


10万需要187毫秒 
100万需要250毫秒 
1000万需要984毫秒 


------解决方案--------------------
顶一下..~
------解决方案--------------------
http://topic.csdn.net/u/20080624/11/55e5a350-d260-4a35-a02a-71b4c1795a00.html?seed=398337064
------解决方案--------------------
支持!~
------解决方案--------------------
oo
  相关解决方案