直接使用数组还真不太好找,我也主要是用了list.IndexOf()方法,思路是占位置的方法,先初使一个数组,然后将原来被删过后的数组在新的数组里占个位置,最后找出没被占过的索引就是被删掉的数
- List<int> iList = new List<int>();
- Random r = new Random();
- int i;
- while (iList.Count < 10000)//生成删除前的数组
- {
- i = r.Next(1, 10001);
- if (!iList.Contains(i))
- {
- iList.Add(i);
- }
- }
- int[] delarr = new int[5];// 生成要删除的数
- int delid = 0;
- while (true)
- {
- int n = r.Next(1, 10001);
- if (delarr.Contains(n))
- continue;
- delarr[delid] = n;
- delid++;
- if (delid == 5)
- break;
- }
- foreach (int n in delarr) // 删除
- {
- iList.Remove(n);
- }
- // 主要部份,寻找被删除数
- List<int> allarr = new int[10000].ToList();
- for (int j = 0; j < iList.Count; j++)
- {
- int id = iList[j];
- allarr[id - 1] = id;
- }
- for (int j = 0; j < 5; j++)
- {
- int id = allarr.IndexOf(0);
- Console.WriteLine(id + 1);
- allarr[id] = 99999;
- }
- //-----------------------
- Console.Write("原被删除数:"); // 输出
- foreach (int a in delarr)
- {
- Console.Write(a + ",");
- }
- //-----------------------
复制代码
代码看着繁琐,但主要部份也就十二行... |