日期:2014-05-17  浏览次数:20805 次

求教关于数组中删除元素的问题
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就容易操作