您的位置:首页 > 其它

两个二维矩阵相乘的算法

2010-11-27 17:56 288 查看
昨天看了清华大学严蔚敏老师的数据结构的视频,讲到了数组,严蔚敏老师认真分析了一个关于两个二维数组的算法,那个算法是用c语言写的,反复看了两遍才把那个算法看懂了。今天上班上午没事做,干脆把昨天的算法改成C#语言版的。(嘿嘿,俺只对C#语言比较了解)

这是俺写的代码:

class IArray
{
int[,] aArray = new int[, ] { { 0, 0, 2 }, { 1, 0, 3 }, { 0, 4, 0 }, { 2, 1, 0 } };
int[,] bArray = new int[, ] { { 1, 0 }, { 0, 4 }, { 2, 1 } };
public void GetValue()
{
Console.WriteLine("第一个数组如下:");
for (int i = 0; i < aArray.GetLength(0); i++)
{
for (int j = 0; j < aArray.GetLength(1); j++)
{
Console.Write("{0} ", aArray[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();

Console.WriteLine("第二个数组如下:");
for (int i = 0; i < bArray.GetLength(0); i++)
{
for (int j = 0; j < bArray.GetLength(1); j++)
{
Console.Write("{0} ", bArray[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();

int[,] cArray = new int[aArray.GetLength(0), bArray.GetLength(1)];//数组cArray为aArray和bArray相乘的结果

for (int i = 0; i < aArray.GetLength(0); i++) //i为数组aArray的行数
{
for (int j = 0; j < bArray.GetLength(1); j++) //j为bArray的列数
{
int total = 0;
for (int k = 0; k < aArray.GetLength(1); k++) //k为数组aArray的列数
{
if (aArray[i, k] == 0) //若数组aArray的 i 行k列的值为0,则什么都不做
{

}
else
{
total += aArray[i, k] * bArray[k, j];
cArray[i, j] = total;
}
}
}
}

Console.WriteLine("两个数组相乘计算结果数组如下:");

for (int i = 0; i < cArray.GetLength(0); i++)
{
for (int j = 0; j < cArray.GetLength(1); j++)
{
Console.Write("{0} ", cArray[i, j]);
}
Console.WriteLine();
}
Console.ReadLine();
}

}

static void Main(string[] args)
{
IArray ia = new IArray();
ia.GetValue();
}

二维数组aArray和bArray直接定义好了,懒的一个一个地手动地输入数字的值了。

最可怜的是我连声明一个二维数组都要上网搜索,真是汗颜呀!(俺是刚工作3个月的小程序员,属于菜鸟中的菜鸟)

虽然这个比较简单,但是确是我第一次把学到的理论知识转化为实践,还是很有象征意义的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: