我想弄清楚锯齿状数组的用处是什么?我的意思是锯齿状数组在现实生活中是否有任何应用?任何建议将不胜感激
问问题
3993 次
3 回答
4
什么算作“现实生活中的情况”?立即想到的一个例子是存储稀疏矩阵。矩阵通常以所谓的“密集”表示形式存储为二维数组。之所以称为密集,是因为它存储了数组的每个元素。但在某些情况下,数组的许多元素都是 0(或者可能是其他值),显式存储它们没有意义。授予大量稀疏矩阵表示使用少量一维数组。
在您不希望每个一维数组具有相同长度的情况下,真正的锯齿状数组绝对有用。锯齿状数组也使得交换整个“行”变得更加容易。
应该注意的是,至少在 .NET 中,锯齿状数组通常比多维数组具有更好的性能。
于 2013-11-10T08:00:52.817 回答
2
这是一个简单的例子:
假设由于某种原因您需要对整数进行因式分解。对于小整数,创建查找表以加快处理速度可能是有意义的。那将是一个锯齿状的数组。
int[][] factors = new int[][]
{
null, // 0 doesn't have prime factors
new int[] { }, // 1 is the trivial case
new int[] { 2 },
new int[] { 3 },
new int[] { 2, 2 },
new int[] { 5 },
new int[] { 2, 3},
new int[] { 7 },
new int[] { 2, 2, 2 },
new int[] { 3, 3 },
new int[] { 2, 5 },
// ... and so on
};
int[] PrimeFactorsOf(int value)
{
if (value < factors.Length)
{
return factors[value];
}
else
{
// do the work
}
}
于 2013-11-10T10:43:56.630 回答