首页 > 代码库 > 一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。
一个简单的算法,定义一个长度为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 Program10 {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.
一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。