數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--稀疏矩陣運算器_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  課程設(shè)計報告</b></p><p>  題目: 稀疏矩陣運算器 </p><p>  院 系: 計算機科學(xué)系 </p><p>  專業(yè)班級:10計算機科學(xué)與技術(shù)(網(wǎng)絡(luò)工程)</p><

2、;p>  學(xué) 號: </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  2011年12月23 日</p><p><b>  目錄:</b></p><p>  1、分析問題和

3、確定解決方案 ………………………… 3 </p><p>  1.1問題描述 …………………………… 3 </p><p>  1.2 輸入的形式和輸入值的范圍 …………………… 3</p><p>  1.3 輸出的形式 ……………………………… 3</p><p>  1.4 程序所能達到的功

4、能 …………………………… 3</p><p>  1.5 測試數(shù)據(jù) ……………………………… 3</p><p>  1.6 確定解決方案 ……………………………… 4</p><p>  1.7所有抽象數(shù)據(jù)類型的定義 …………………………… 4</p><p>  2、詳細設(shè)計

5、 …………………………… 5</p><p>  2.1稀疏矩陣加法運算思路 …………………………… 5</p><p>  2.2稀疏矩陣減法運算思路 ……………………………… 7</p><p>  2.3稀疏矩陣乘法運算思路……………………………… 9</p><p>  2.4創(chuàng)建稀疏矩陣 …………………

6、…………… 11</p><p>  3、系統(tǒng)調(diào)試與測試 …………………………… 12</p><p>  3.1程序的菜單界面 ……………………………… 12</p><p>  3.2 實現(xiàn)加法運算 ……………………………… 12</p><p>  3.3 實現(xiàn)減法運算 …………………

7、…………… 13</p><p>  3.4實現(xiàn)乘法運算 ……………………………… 14</p><p>  4、結(jié)果分析 …………………………………… 15</p><p>  4.1、算法的時空分析 ……………………………… 15</p><p>  4.2、經(jīng)驗和體會 ………………

8、……………… 15</p><p>  5、參考文獻 ……………………………… 15</p><p>  1、分析問題和確定解決方案</p><p><b>  1.1問題描述</b></p><p>  稀疏矩陣是指那些多數(shù)元素為零的矩陣。利用“稀疏”特點進行存儲和計算可以大大節(jié)省存儲空間,提高

9、計算效率。實現(xiàn)一個能進行稀疏矩陣基本運算的運算器。用三元組實現(xiàn)稀疏矩陣的相加、相減,相乘;</p><p>  1.2輸入的形式和輸入值的范圍</p><p>  以三元組的形式輸入,首先應(yīng)輸入矩陣的行數(shù)和列數(shù),并判別給出的兩個矩陣的行、列數(shù)對于所要求作的運算是否相匹配??稍O(shè)矩陣的行數(shù)和列數(shù)均不超過20;</p><p>  例如:輸入的三元組為:((1,1,10)

10、,(2,3,9),(3,1,-1))其對應(yīng)的稀疏矩陣為:</p><p><b>  1.3 輸出的形式</b></p><p>  運算結(jié)果的矩陣以通常的陣列形式輸出;</p><p>  1.4程序所能達到的功能</p><p>  該程序可以實現(xiàn)以三元組形式輸入兩個矩陣,求出兩個矩陣的和、差、積;并可根據(jù)輸入的矩陣

11、的行列數(shù)不同判別是否可以進行相加、減、乘,并重新輸入正確的矩陣;</p><p><b>  1.5測試數(shù)據(jù)</b></p><p>  測試的數(shù)據(jù)及其結(jié)果如下:</p><p>  矩陣M 矩陣N 矩陣Q</p><p><b>  加法:</b></

12、p><p><b>  + = </b></p><p><b>  減法:</b></p><p>  - = </p><p><b>  乘法:</b></p><p><b>  X = </b><

13、;/p><p>  1.6 確定解決方案</p><p>  進入運算器界面后選擇要實行的操作,按1實現(xiàn)矩陣相加,調(diào)用函數(shù)AddSMatrix,若輸入的兩個矩陣行列數(shù)不相等,則提示輸入錯誤,重新輸入矩陣進行加法運算;按2實現(xiàn)矩陣相乘,若輸入的第一矩陣的列數(shù)不等于第二個矩陣的行數(shù),則提示輸入錯誤,重新輸入矩陣進行乘法運算;按3實現(xiàn)矩陣相減,若輸入的兩個矩陣行列數(shù)不相等,則提示輸入錯誤,重新輸入矩

14、陣進行減法運算;按4退出程序 </p><p>  以加法為例實現(xiàn)運算過程,如下:(稀疏矩陣的和為Q)</p><p>  第一個稀疏矩陣M的三元組為((1,1,10),(2,3,9),(3,1,-1))</p><p>  第二個稀疏矩陣N的三元組為((2,3,-1),(3,1,1),(3,3,-3))</p><p>  M的第一個三元

15、組(1,1,10)與N的第一個三元組(2,3,-1)比較,因行數(shù)1<2則Q得到第一個三元組(1,1,10);M的第二個三元組與N的第一個三元組比較,因?qū)?yīng)行列數(shù)相等則9+(-1)=8,次行列數(shù)就是Q的行列數(shù)即得到Q的第二個三元組為(2,3,8);M第三個三元組(3,1,-1))與N的第二個三元組進行比較,因?qū)?yīng)行列數(shù)相等,且1+(-1)=0,則不進行相加;而此時只有 N的第三個三元組(3,3,-3)符合條件,則Q得到第三個三元組(

16、3,3,-3);最終結(jié)果為</p><p>  ((1,1,10),(2,3,8),(3,3,-3))</p><p>  1.7所有抽象數(shù)據(jù)類型的定義</p><p>  以順序存儲結(jié)構(gòu)來表示三元組表,則可得到稀疏矩陣的一種壓縮存儲方式——三元組順序表。</p><p>  /* 稀疏矩陣的三元組順序表存儲表示 */</p>

17、<p>  #define MAXSIZE 1000 //假設(shè)非零元個數(shù)的最大值為1000</p><p>  typedef struct</p><p>  {int i,j; //該非零元的行下標和列下標</p><p>  ElemType e; //該非零元數(shù)值</p><p><b>  } Triple;

18、</b></p><p>  typedef struct</p><p>  { Triple data[MAXSIZE+1]; // 非零三元組表,data[0]未用</p><p>  int mu,nu,tu; //矩陣的行數(shù)(<20)、列數(shù)(<20)和非零元個數(shù)</p><p>  } TS

19、Matrix;</p><p>  在此,data域中表示非零元得三元組是以行序為主序順序排列的,這樣有利于進行某些矩陣運算。</p><p>  抽象數(shù)據(jù)類型稀疏矩陣的定義如下:</p><p>  ADT SparseMatrix{</p><p>  數(shù)據(jù)對象:D={aij|i=1,2,3,…,m;j=1,2,…,n;</p>

20、;<p>  Aij(-ElemSet,m和n分別稱為矩陣的行數(shù)和列數(shù)}</p><p>  數(shù)據(jù)關(guān)系:R={Row,Col}</p><p><b>  基本操作:</b></p><p>  CreateSMatrix(&M);</p><p>  操作結(jié)果:創(chuàng)建稀疏矩陣M。</p>

21、<p>  PrintSMatrix(M);</p><p>  初始條件:稀疏矩陣M存在。</p><p>  操作結(jié)果:輸出稀疏矩陣M。</p><p>  AddSMatrix(M,N,&Q);</p><p>  初始條件:稀疏矩陣M和N的的行數(shù)和列數(shù)對應(yīng)相等。</p><p>  操作結(jié)

22、果:求稀疏矩陣的和Q=M+N。</p><p>  SubSMatrix(M,N,&Q);</p><p>  初始條件:稀疏矩陣M和N的的行數(shù)和列數(shù)對應(yīng)相等。</p><p>  操作結(jié)果:求稀疏矩陣的差Q=M-N。</p><p>  MultSMatrix(M,N,&Q);</p><p>  初

23、始條件:稀疏矩陣M的列數(shù)等于N的行數(shù)。</p><p>  操作結(jié)果:求稀疏矩陣的積Q=M X N。</p><p>  }ADT SpareMatrix</p><p>  此流程表示的是主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。</p><p><b>  2、詳細設(shè)計</b></p><

24、p>  2.1稀疏矩陣的加法運算思路</p><p>  比較滿足條件(行數(shù)及列數(shù)都相同的兩個矩陣)的兩個稀疏矩陣中不為0的元素的行數(shù)及列數(shù)(即i與j),將i與j都相等的前后兩個元素值e相加,保持i,j不變儲存在新的三元組中,不等的則分別儲存在此新三元組中。最后得到的這個新三元組表就是兩個矩陣的和矩陣的三元組表。其算法如下:</p><p>  Status AddSMatrix(T

25、SMatrix M, TSMatrix N, TSMatrix &Q)</p><p><b>  { </b></p><p>  if(M.mu==N.mu&&M.nu==N.nu) //行數(shù),列數(shù)相等才能相加</p><p><b>  {</b></p><p>

26、;  Q.mu=M.mu;</p><p>  Q.nu=N.nu;</p><p>  int p,q,k;</p><p><b>  p=1;</b></p><p><b>  q=1;</b></p><p><b>  k=1;</b><

27、;/p><p>  while(p<=M.tu&&q<=N.tu) //兩個稀疏矩陣存在</p><p><b>  {</b></p><p>  if(M.data[p].i==N.data[q].i)//兩個稀疏矩陣的行數(shù)相等</p><p><b>  {</b>&

28、lt;/p><p>  if(M.data[p].j==N.data[q].j) //兩個稀疏矩陣的列數(shù)相等</p><p><b>  {</b></p><p>  if(M.data[p].e+N.data[q].e!=0) //兩個稀疏矩陣相加的結(jié)果不為0(三元組表)</p><p><b>  {

29、</b></p><p>  Q.data[k].i=M.data[p].i;</p><p>  Q.data[k].j=M.data[p].j;</p><p>  Q.data[k].e=M.data[p].e+N.data[q].e;</p><p><b>  ++k;</b></p>

30、<p><b>  }</b></p><p><b>  ++q;</b></p><p><b>  ++p;</b></p><p><b>  }</b></p><p>  else if(M.data[p].j<N.data

31、[q].j) </p><p>  //第一個稀疏矩陣列數(shù)小于第二個稀疏矩陣列數(shù)</p><p><b>  {</b></p><p>  Q.data[k]=M.data[p]; </p><p>  //把M中的所有信息都賦給Q</p><p><b>  ++p;</

32、b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  else </b></p><p>  //第一個稀疏矩陣列數(shù)大于第二個稀疏矩陣的列數(shù)</p><p><b>  {

33、</b></p><p>  Q.data[k]=N.data[q];</p><p><b>  ++q;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  

34、}</b></p><p>  else if(M.data[p].i<N.data[q].i) </p><p>  //第一個稀疏矩陣行列數(shù)小于第二個稀疏矩陣行數(shù)</p><p><b>  {</b></p><p>  Q.data[k]=M.data[p];</p><p

35、><b>  ++p;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  else </b></p><p>  //第一個稀疏矩陣行列數(shù)小于第二個稀疏矩陣行數(shù)</p&g

36、t;<p><b>  {</b></p><p>  Q.data[k]=N.data[q];</p><p><b>  ++q;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p&

37、gt;<p><b>  }</b></p><p>  while(p<=M.tu) //只有M并且符合條件</p><p><b>  {</b></p><p>  Q.data[k]=M.data[p];</p><p><b>  ++p;</b>

38、;</p><p><b>  ++k;</b></p><p><b>  }</b></p><p>  while(q<=N.tu) //只有N并且符合條件</p><p><b>  {</b></p><p>  Q.data[k]=N

39、.data[q];</p><p><b>  ++q;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  Q.tu=k-1;</b></p><p>  pr

40、intf("\t\t*** *** 兩個矩陣的加法結(jié)果為 *** ***\n");</p><p>  return OK;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b><

41、;/p><p>  printf("兩個矩陣行,列數(shù)不等,出錯了\n");</p><p>  CreateSMatrix(M);</p><p>  printf("第一個矩陣為:\n");</p><p>  PrintSMatrix(M);</p><p>  CreateSM

42、atrix(N);</p><p>  printf("第二個矩陣為:\n");</p><p>  PrintSMatrix(N);</p><p>  printf("\n"); </p><p>  AddSMatrix(M,N,Q);</p><p><b> 

43、 } </b></p><p><b>  }</b></p><p>  2.2稀疏矩陣相減的算法思路</p><p>  此思路與稀疏矩陣相加的算法思路相同,其算法如下:</p><p>  Status SubtMatrix(TSMatrix M, TSMatrix N,TSMatrix &Q

44、)</p><p><b>  {</b></p><p>  if(M.mu==N.mu && M.nu==N.nu) //行數(shù),列數(shù)相等才能相減</p><p><b>  {</b></p><p>  Q.mu=M.mu;</p><p>

45、  Q.nu=N.nu;</p><p>  int p,q,k;</p><p>  p=1; //M的第p個三元組</p><p>  q=1; //N的第q個三元組</p><p>  k=1; //Q的第k個三元組</p><p>  while(p<=M.tu&&q<=N.t

46、u) //兩個稀疏矩陣存在</p><p><b>  {</b></p><p>  if(M.data[p].i==N.data[q].i) //兩個稀疏矩陣的行數(shù)相等</p><p><b>  {</b></p><p>  if(M.data[p].j==N.data[q].j)//

47、兩個稀疏矩陣的列數(shù)相等</p><p><b>  {</b></p><p>  if(M.data[p].e-N.data[q].e!=0) </p><p>  //兩個稀疏矩陣相減的結(jié)果不為0</p><p><b>  {</b></p><p>  Q.dat

48、a[k].i=M.data[p].i;</p><p>  Q.data[k].j=M.data[p].j;</p><p>  Q.data[k].e=M.data[p].e-N.data[q].e;</p><p><b>  ++k;</b></p><p><b>  }</b></p

49、><p><b>  ++q;</b></p><p><b>  ++p;</b></p><p><b>  }</b></p><p>  else if(M.data[p].j<N.data[q].j) </p><p>  //第一個稀疏矩

50、陣列數(shù)小于第二個稀疏矩陣的列數(shù)</p><p><b>  { </b></p><p>  Q.data[k]=M.data[p];</p><p><b>  ++p;</b></p><p><b>  ++k;</b></p><p><

51、b>  }</b></p><p>  else if(M.data[p].j>N.data[q].j)//第一個稀疏矩陣列數(shù)大于第二個稀疏矩陣的列</p><p><b>  {</b></p><p>  Q.data[k].i=N.data[q].i;</p><p>  Q.data[k]

52、.j=N.data[q].j;</p><p>  Q.data[k].e=-N.data[q].e; //即0-N.data[q].e</p><p><b>  ++q;</b></p><p><b>  ++k;</b></p><p><b>  }</b></

53、p><p><b>  }</b></p><p>  else if(M.data[p].i<N.data[q].i)//第一個稀疏矩陣行列數(shù)小于第二個稀疏矩陣行數(shù)</p><p><b>  {</b></p><p>  Q.data[k]=M.data[p]; //整個三元組進行復(fù)制&

54、lt;/p><p><b>  ++p;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p>  if(M.data[p].i>N.data[q].i)//第一個稀疏矩陣行列數(shù)大于第二個稀疏矩陣行數(shù)</p>

55、<p><b>  {</b></p><p>  Q.data[k].i=N.data[q].i;</p><p>  Q.data[k].j=N.data[q].j;</p><p>  Q.data[k].e=-N.data[q].e; //即0-N.data[q].e</p><p><b&g

56、t;  ++q;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  while(p<=M.tu) //只有M并且符合條件</p><p

57、><b>  {</b></p><p>  Q.data[k]=M.data[p];</p><p><b>  ++p;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><

58、p>  while(q<=N.tu) //只有N并且符合條件</p><p><b>  {</b></p><p>  Q.data[k].i=N.data[q].i;</p><p>  Q.data[k].j=N.data[q].j;</p><p>  Q.data[k].e=-N.data[q].

59、e;</p><p><b>  ++q;</b></p><p><b>  ++k;</b></p><p><b>  }</b></p><p><b>  Q.tu=k-1;</b></p><p>  printf(&q

60、uot;\t\t*** *** 兩個矩陣的相減結(jié)果為 *** ***\n");</p><p>  return OK;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

61、;<p>  printf("兩個矩陣行列數(shù)不等,不能相減,請重新輸入\n");</p><p>  CreateSMatrix(M);</p><p>  printf("第一個矩陣為:\n");</p><p>  PrintSMatrix(M);</p><p>  CreateSM

62、atrix(N);</p><p>  printf("第二個矩陣為:\n");</p><p>  PrintSMatrix(N);</p><p>  printf("\n");</p><p>  SubtMatrix(M,N,Q);</p><p><b>  

63、}</b></p><p><b>  }</b></p><p>  2.3稀疏矩陣相乘的算法思路</p><p>  兩個相乘的矩陣為M與N,對M中每個元素M.data[p](p=1,2,…,M.tu),找到N中所有滿足條件M.data[p].j=N.data[q].i的元素N.data[q],求得M.data[p].v和N.d

64、ata[q].v的乘積,又T(i,j)=∑M(i,k)×N(k,j),乘積矩陣T中每個元素的值是個累計和,這個乘積M.data[p].v×N.data[q].v只是T[i][j]中的一部分。為便于操作,應(yīng)對每個元素設(shè)一累計和的變量,其初值是零,然后掃描數(shù)組M,求得相應(yīng)元素的乘積并累加到適當?shù)那罄塾嫼偷淖兞可?。由于T中元素的行號和M中元素的行號一致,又M中元素排列是以M的行序為主序的,由此可對T進行逐行處理,先求得累計

65、求和的中間結(jié)果(T的一行),然后再壓縮存儲到Q.data中去,其算法如下:</p><p>  Status MultSMatrix(TSMatrix M, TSMatrix N, TSMatrix &Q)</p><p><b>  {</b></p><p>  int k1,k2,k3,m;</p><p&g

66、t;  Q.mu=M.mu;</p><p>  Q.nu=N.nu;</p><p><b>  Q.tu=0;</b></p><p>  if(M.nu==N.mu)</p><p>  //第一個矩陣的列數(shù)不等于第二個矩陣的行數(shù)才可以相乘</p><p><b>  {</

67、b></p><p>  for(k1=1;k1<=M.tu;k1++)</p><p>  for(k2=1;k2<=N.tu;k2++)</p><p><b>  {</b></p><p>  if(M.data[k1].j==N.data[k2].i)</p><p>

68、  //第一個矩陣的列數(shù)不等于第二個矩陣的行數(shù)時相乘</p><p><b>  {</b></p><p>  m=M.data[k1].e*N.data[k2].e;</p><p>  if(Q.tu==0)</p><p>  //Q中還未有一個非零元時,賦予第一個非零元 </p><p&g

69、t;<b>  {</b></p><p>  Q.data[1].e=m;</p><p>  Q.data[1].i=M.data[k1].i;</p><p>  Q.data[1].j=N.data[k2].j;</p><p><b>  Q.tu++; </b></p>&

70、lt;p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  for(k3=1;k3<=Q.tu;k3++)</p><p><b>  {</b></p&g

71、t;<p>  if(Q.data[k3].i==M.data[k1].i&&Q.data[k3].j==N.data[k2].j)</p><p>  //Q的行等于M的行,Q的列等于N的列時相加</p><p><b>  {</b></p><p>  Q.data[k3].e+=m;//對各個數(shù)相加<

72、/p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(k3==Q.tu+1) //相加完后成為Q中的三元組</p><p><b>  {</

73、b></p><p>  Q.data[k3].e=m;</p><p>  Q.data[k3].i=M.data[k1].i; </p><p>  Q.data[k3].j=N.data[k2].j;</p><p><b>  Q.tu++;</b></p><p><b>

74、;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\t\t*** *** 兩個矩陣相乘結(jié)果為 *** ***\n");&

75、lt;/p><p>  return OK;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("第一個矩陣的列數(shù)不等于第二個矩陣的行

76、數(shù)\n");</p><p>  printf("不能相乘,請重新輸入\n");</p><p>  CreateSMatrix(M);</p><p>  printf("第一個矩陣為:\n");</p><p>  PrintSMatrix(M);</p><p>

77、  CreateSMatrix(N);</p><p>  printf("第二個矩陣為:\n");</p><p>  printSMatrix(N);</p><p>  printf("\n");</p><p>  MultSMatrix(M,N,Q);</p><p>

78、  } </p><p><b>  }</b></p><p><b>  2.4創(chuàng)建稀疏矩陣</b></p><p>  以三元組表的形式輸入創(chuàng)建稀疏矩陣</p><p><b>  其算法如下:</b></p><p>  St

79、atus CreateSMatrix(TSMatrix &M)</p><p><b>  {</b></p><p>  printf("\t\t*** *** 請輸入您的稀疏矩陣 *** *** \n\n"); </p><p><b>  do{</b></p><

80、;p>  printf("\t*** *** 請輸入矩陣的行數(shù),列數(shù),非零元素個數(shù) *** ***\n");</p><p>  printf(" ");</p><p>  scanf("%d%d%d",&M.mu,&M.nu,&M.tu);

81、if((M.mu<0||M.mu>20)||(M.nu<0||M.nu>20)||((M.tu/(M.mu*M.nu))>0.05)||((M.tu>M.mu*M.nu)||M.tu>MAXSIZE))</p><p>  printf("\n 不滿足,請重新輸入!!\n");</p><p>  }while((M.mu<

82、;0||M.mu>20)||(M.nu<0||M.nu>20)||((M.tu/(M.mu*M.nu))>0.05)||((M.tu>M.mu*M.nu)||M.tu>MAXSIZE));</p><p>  for(int k=1;k<=M.tu;k++)</p><p><b>  {</b></p><

83、;p><b>  do{</b></p><p>  printf("\t*** *** 請輸入非零元素的行數(shù)i,列數(shù)j,數(shù)值v *** ***\n");</p><p>  printf(" ");scanf("%d%d%d",&M.da

84、ta[k].i,&M.data[k].j,&M.data[k].e); if((M.data[k].i<0||M.data[k].i>M.mu)||(M.data[k].j<0||M.data[k].j>M.nu)||(M.data[k].e==0))</p><p>  printf("\n 不滿足,請重新輸入!\n");</p>

85、<p>  } while((M.data[k].i<0||M.data[k].i>M.mu)||(M.data[k].j<0||M.data[k].j>M.nu)||(M.data[k].e==0));</p><p><b>  }</b></p><p>  return OK;</p><p><

86、b>  }</b></p><p><b>  3、系統(tǒng)調(diào)試與測試</b></p><p>  3.1程序的菜單界面如下:</p><p>  3.2實現(xiàn)加法運算:</p><p>  3.3實現(xiàn)減法運算:</p><p>  3.4實現(xiàn)乘法運算:</p><

87、p>  當在調(diào)試程序過程中遇到有錯誤的時候,先試著進行調(diào)試,找出不應(yīng)該有得小錯誤,同時參照課本的算法思路對錯誤的語句進行分析,也上網(wǎng)找百度查詢,以得到無錯誤的程序,更重要的是與小組成員進行討論,體現(xiàn)了我們的合作精神。</p><p><b>  4、結(jié)果分析</b></p><p>  4.1 時間復(fù)雜度的分析</p><p><b

88、>  a)加法運算</b></p><p>  由于兩矩陣行列相等,故時間復(fù)雜度為O(行*列)</p><p><b>  b) 減法運算</b></p><p>  由于兩矩陣行列相等,故時間復(fù)雜度為O(行*列)</p><p><b>  c)乘法運算</b></p>

89、;<p>  設(shè)M是m1*n1矩陣,N是m2*n2矩陣,則時間復(fù)雜度是O(m1*n1*n2)</p><p><b>  4.2 心得體會</b></p><p>  雖然一直以來我不怎么喜歡數(shù)據(jù)結(jié)構(gòu)這門課,但是它已經(jīng)是我的一門課程,我就必須學(xué)好它,曾經(jīng)在編程上遇到過很多困難,編了一學(xué)期的程序,有時會因為編出作業(yè)題目而又高興幾天,有時會因編不出程序而失落

90、幾天,總之,我喜歡編程的過程,包括與同學(xué)交流,上網(wǎng)百度,從中學(xué)到了很多。</p><p>  此次的課程設(shè)計更讓我們意識到了數(shù)據(jù)結(jié)構(gòu)的高深,與小組成員的討論讓我們學(xué)到了更多關(guān)于數(shù)據(jù)結(jié)構(gòu)的知識,這是一次團隊合作的收獲成果。</p><p><b>  5、參考文獻</b></p><p>  1、《數(shù)據(jù)結(jié)構(gòu)》(c語言描述),嚴蔚敏編著,清華大學(xué)出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論