用C#编写一个数组 长度一百 然后插入1-100之间的数字 不能重复

2024-12-22 10:49:16
推荐回答(4个)
回答1:

3L程序可以,但是效率太低【复杂度o(n2)】,更好的做法是,先把1-100放入一个列表,然后用Random从0-99来获取位置,每得到一个值就从列表pop出来,放入数组;因为位置始终不变,而列表在缩小,所以每次都要这么变动:index=index%列表长度;直到列表里面只有1个元素的时候,直接把最后一个数字放入数组最后一个空位,返回数组即可。 程序就不写了,算法给你了 。算法复杂度o(n)

回答2:

int len=100;
int[] array=new int[len];
for(int i=0;i{
array[i]=i+1;
}

楼主可以跑下这段代码,我写个C#点的:
int len=100;
List array=new List();
for(int i=0;i{
array.Add(i+1);
}

//如果希望打乱顺序加上下面这段(Shuffle,洗牌算法)
Random r=new Random();
for (int i = 0; i < len-1; i++)
{
int tmp = array[i];
int pos =i+ r.Next(0, len-i);
array[i]=array[pos];
array[pos] = tmp;
}

//顺序排序
array.Sort();

//希望控制台输出:
foreach(int a in array)
{
Console.WriteLine(a);
}

回答3:

是插入1-100的随机值么?
List list=new List();
Random ran = new Random();
int tempInt=1;
while(1==1) {
tempInt=ran.Next(1,101);
if (!list.Contains(tempInt)) {
list.Add(tempInt);
}

if (list.Count == 100) {
break;
}
};

Console.WriteLine(list.Count);
foreach (int i in list) {
Console.WriteLine(i.ToString());
}

Console.WriteLine("排序后");
list.Sort();
foreach (int i in list) {
Console.WriteLine(i.ToString());
}

回答4:

这跟C不是一样一样的么。。。。楼上正解。。。