求教关于数组中删除元素的问题
http://bbs.csdn.net/topics/370008349
我的问题与这个纸牌问题很相似。但是没有找到答案。
我也是想做一组数组,一维的就可以。如果有必要可以用二维。
我想从数组中随机取出一个数据,之后这个数据就不要再取了。而是从其他的数据中继续取。
我原来的思路是先取再判断,后来发现如果数据较少的时候还是勉强可以用,但是一旦数据量比较大的时候肯定会进入一个死循环。
如果能把这个数据T出我想就不会出现这样的问题了。求列位大神指点
(编辑环境为VS2005,.NET 2.0)
这个是我错误的思路,请高手参考指点一下。
a11 = ran.Next(1, 11);
while (a1 == a11 || a2 == a11 || a3 == a11 || a4 == a11 || a5 == a11 || a6 == a11||a7 == a11 || a8 == a11||a9==a11||a10==a11)
{
a11 = ran.Next(1, 11);
}
lable.text=a11.tostring();
------解决方案--------------------那样你可以改用List,用完一个数据, 直接Remove掉,用数组因为不能删除,需要重新开辟控件,复制剩下的元素过去,效率低,不过可以用二维数组,另一维表示,该数是否有效
------解决方案--------------------随机取出一个后,就从数组中删除取出的这个,再接着从数组中随机抽取就可以了的。
------解决方案--------------------
用List嘛,取出的数据就可以删掉了
List<byte> my_list=new List<byte>();//这样定义
移除的话就my_list.Remove
------解决方案--------------------嗯,用list可以
List<类型> my_list=new List<类型>();
a11 = ran.Next(1, my_list.count);
my_list[all] //取到值
my_list.Remove(all)//就把这个对象删掉了
------解决方案--------------------一定要数组的话
就外边设置一个变量 int i = 10;
就把 a11 = ran.Next(1, i);
然后i --; 然后找到的位置元素与ai替换
没试过行不行 不过用list就容易操作