之前,一直在谈.NET框架方面的问题,今天来谈谈关于Array和List的使用问题,这应该算是属于算法的最基础的东西了。只是提醒大家对这个问题稍加注意。
写这个是因为一个同学的求助,事情是这样的,他去负责公司的一个培训模块,在培训模块中,有一个功能是自动成卷。然后,我们会很容易地想到洗牌算法。于是我给他大概解释了洗牌算法的过程和步骤,然后他给出了这样的代码,还很骄傲地告诉我,他使用了泛型……
List<int> list = new List<int>();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
Random r = new Random();
for (int j = 0; j < 100; j++)
{
int temp;
int x1 = r.Next(10);
int x2 = r.Next(10);
temp = list[x1];
list[x1] = list[x2];
list[x2] = temp;
}
我委婉地告诉他,他这个方法不好,然后写下了下面的代码:
int[] array = new int[10];
for (int i = 0; i < 10; i++)
{
array[i] = i;
}
Random r = new Random();
for (int j = 0; j < 100; j++)
{
int temp;
int x1 = r.Next(10);
int x2 = r.Next(10);
temp = array[x1];
array[x1] = array[x2];
array[x2] = temp;
}
他很不屑地对我说,不是都一样么!而且还在以使用了泛型为豪!我无语……
我仅仅把List(链表)换成了Array(数组),有人会说,这样的关系大么?