好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现将数组内元素打乱顺序的方法

本文实例讲述了C#实现将数组内元素打乱顺序的方法。分享给大家供大家参考。具体如下:

1.泛型类代码

?

//泛型类

class Item<T>

{

  T[] item;

  //构造函数

  public Item(T[] obj)

  {

   item = new T[obj.Length];

   for ( int i = 0; i < obj.Length; i++)

   {

    item[i] = obj[i];

   }

  }

  public Type ShowType() { return typeof (T); } //返回类型

  public T[] GetItems() { return item; } //返回原数组

  //返回打乱顺序后的数组

  public T[] GetDisruptedItems()

  {

   //生成一个新数组:用于在之上计算和返回

   T[] temp;

   temp = new T[item.Length];

   for ( int i = 0; i < temp.Length; i++) { temp[i] = item[i]; }

   //打乱数组中元素顺序

   Random rand = new Random(DateTime.Now.Millisecond);

   for ( int i = 0; i < temp.Length; i++)

   {

    int x, y; T t;

    x = rand.Next(0, temp.Length);

    do

    {

     y = rand.Next(0, temp.Length);

    } while (y == x);

    t = temp[x];

    temp[x] = temp[y];

    temp[y] = t;

   }

   return temp;

  }

}

2.Main函数调用

?

static void Main( string [] args)

{

  int [] array = new int [] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

  //输出数组类型

  Item< int > disrupter = new Item< int >(array);

  Console.WriteLine( "数组类型:" + disrupter.ShowType().ToString());

  //输出数组

  Console.Write( "原输入数组为:" );

  for ( int i = 0; i < array.Length; i++)

  {

   Console.Write(array[i].ToString() + ' ' );

  }

  Console.WriteLine();

  //输出一个打乱后数组

  int [] disruptedArray = disrupter.GetDisruptedItems();

  Console.Write( "打乱后数组为:" );

  for ( int i = 0; i < disruptedArray.Length; i++)

  {

   Console.Write(disruptedArray[i].ToString() + ' ' );

  }

  Console.WriteLine();

  Console.ReadLine();

}

3.运行结果

希望本文所述对大家的C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现将数组内元素打乱顺序的方法的详细内容...

  阅读:72次