对一个有t个非零值元素的m×n矩阵,用B[0..t,1..3]的数组来表示,其中第0行的三个元素分别是m,n,t,从第一行开始到最后一行,每行表示一个非零元素,第一列为矩阵元素行号,第二列为其列号,第三列为其元素量,对这样的表示法,试编写一个算法确定任意一

admin2010-04-24  25

问题 对一个有t个非零值元素的m×n矩阵,用B[0..t,1..3]的数组来表示,其中第0行的三个元素分别是m,n,t,从第一行开始到最后一行,每行表示一个非零元素,第一列为矩阵元素行号,第二列为其列号,第三列为其元素量,对这样的表示法,试编写一个算法确定任意一个元素A[j]的位置,并考虑若修改其元素值须用多少时间?(设B中第1列原行号是递增的)

选项

答案分析题意可得其算法思想为: 首先可在数组B中找到相应的行,然后找到相应的列,即可修改其元素值,可假定要修改的A[i][j],原先就具有非零值。从而可将算法描述为: lorte(B,t,i,j,v) /*确定任意一个元素A[i][j]的位置*/ datatype B[][];/*B的杆标为0..t和1..3*/ int t,i,j; float v; { datatype A[][]; /*A的下标为1..m和1..n,A表示m×n矩阵*/ int p; p=1; while((B[p][1]!=1)&&(p<=t)) P++; if(p>t)printf Chasn’t element found\n"); else { while((B[p][1]==i)**(p<=t)&&(B[p][i]!=j)) P++; if((B[p][1]==i)&&(B[p][2]!=j)) B[p][3]=v; else printf ("no element found\n"); } } /*lorte*| 显然,在本算法中可能出现的最坏情况:一是需要修改的元素位于B中最后一行;二是B[i][j]先的元素值为零,而无法在B中查找到相应的位置。所以,在这两种情况下的时间复杂度为0(t)。

解析
转载请注明原文地址:https://kaotiyun.com/show/rMAx777K
本试题收录于: 数据结构题库理工类分类
0

最新回复(0)