【发布时间】:2010-03-11 15:53:43
【问题描述】:
我有以下程序通过数组创建 100 个随机元素。 这 100 个随机值是唯一的,每个值只显示一次。
虽然使用线性搜索,但它会不断查找整个数组。 我怎么能得到一个 Jagged Array 进入这个,所以它只“扫描”剩下的地方? (假设我将表格保持在 100 个最大元素,因此如果生成一个随机值,则该数组包含 99 个元素并进行线性搜索扫描......)
我假设我必须在 FoundLinearInArray 的某处实现锯齿状数组?
希望这有任何意义。 问候。
private int ValidNumber(int[] T, int X, int Range)
{
Random RndInt = new Random();
do
{
X = RndInt.Next(1, Range + 1);
} while (FoundLinearInArray(T, X));
return X;
}/*ValidNumber*/
private bool FoundLinearInArray(int[] A, int X)
{
byte I = 0;
while ((I < A.Length) && (A[I] != X))
{
I++;
}
return (I < A.Length);
}/*FoundInArray*/
public void FillArray(int[] T, int Range)
{
for (byte I = 0; I < T.Length; I++)
{
T[I] = ValidNumber(T, I, Range);
}
}/*FillArray*/
【问题讨论】:
-
在阅读本文时,我不得不在脑海中对自己重复“T 不是类型参数”! :)
-
想我可能需要对此进行一些澄清。您是说您有一个预先填充了 100 个值的数组,而您的例程需要生成一个尚未在 100 个集合中的新值?或者你是说你想用 100 个唯一值填充和清空(零初始化)数组?
-
不,我的问题不完全是关于生成数字本身!我想知道是否可以为此使用锯齿状数组,因为线性搜索一直遍历整个数组?
标签: c# jagged-arrays