一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法。

今天有空写了一下。代码如下,注释比较详细:

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Text.RegularExpressions;
 6 
 7 namespace TestNumber
 8 {
 9     class Program
10     {
11         //定义判断正整数的正则表达式
12         public static string regex = "^[1-9][0-9]*";
13         static void Main(string[] args)
14         {
15 
16             Console.WriteLine("please input a number!");
17             string InputStr = Console.ReadLine();
18             //判断输入是否正整数,不是的话,结束方法
19             if (!Regex.IsMatch(InputStr,regex))
20             {
21                Console.WriteLine("input format error !");
22                return;
23             }
24             //转换整形
25             int InputNum=Convert.ToInt32(InputStr);
26             
27             //创建整形集合,将1至n放置集合
28             List<int> NumList = new List<int>();
29             for (int j = 1; j < InputNum+1; j++)
30             {
31                 NumList.Add(j);
32             }
33             //定义一个随机数实例
34             Random R=new Random();
35             int[] OutputNum = new int[InputNum];
36             for (int i = 0; i < InputNum; i++)
37             {
38                 //获取集合的随机一个元素
39                 int k = R.Next(0, InputNum-i);
40                 //将元素放置数组
41                 OutputNum[i] = NumList[k];
42                 //集合移除该元素
43                 NumList.RemoveAt(k);
44             }
45             foreach (var i in OutputNum)
46             {
47                 Console.Write(i+",");
48             }
49 
50         }
51     }
52 }

 

测试异常结果如下:

测试正常结果如下:

 

ok,that‘s all.

posted @ 2014-11-24 17:02  阿拉蕾家的小铁匠  阅读(846)  评论(0编辑  收藏  举报