C++ 中矩陣的行遍歷與列遍歷


矩陣可以以兩種方式遍歷。行遍歷從第一行開始,依次訪問每一行,直到最後一行。一行中的元素從索引 0 返回到最後一個索引。

在列遍歷中,元素按順序從第一列遍歷到最後一列。

在二維矩陣 M[i][j] 中。索引 i 用於表示行,索引 j 用於表示列。對於行遍歷,從

i=第 0 行 和 0<=j<最後一個索引

i=第 1 行 和 0<=j<最後一個索引

.....

i=最後一行 和 0<=j<最後一個索引

對於列遍歷,從

j=第 0 列 和 0<=i<最後一個索引

j=第 1 列 和 0<=i<最後一個索引

.....

j=最後一列 和 0<=i<最後一個索引

索引的順序在二維陣列 M[i][j] 中保持不變 - i 用於行,j 用於列

示例

輸入 

int arr[MAX][MAX] = { {1,2,3,4,5},{6,7,8,9,0},
   {5,4,3,2,1},{0,0,0,0,0},
   {8,9,7,6,1}};

輸出 

Row Major Traversal
1 2 3 4 5
6 7 8 9 0
5 4 3 2 1
0 0 0 0 0
8 9 7 6 1
Column Major Traversal
1 6 5 0 8
2 7 4 0 9
3 8 3 0 7
4 9 2 0 6
5 0 1 0 1

說明 −輸出不言自明

輸入 

int arr[MAX][MAX] = { {1,1,1,1,1},{2,2,2,2,2},
   {3,3,3,3,3},{4,4,4,4,4},
   {5,5,5,5,5}};

輸出 

Row Major Traversal
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Column Major Traversal
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

說明 − 輸出不言自明。

下面程式中使用的方法如下

在這種方法中,我們使用兩個 for 迴圈來列印輸入的二維矩陣,分別進行行遍歷和列遍歷。

  • 獲取輸入陣列 arr[][] 來表示二維矩陣。

  • 獲取變數 i 和 j 作為行元素和列元素的索引。

  • 對於行遍歷,從索引 i=0 開始到 i<MAX 的 for 迴圈,逐行遍歷

  • 在其中,從 j=0 開始到 j<MAX 的巢狀 for 迴圈,遍歷第 i 行的所有元素。

  • 列印 arr[i][j]

  • 對於列遍歷,從索引 j=0 開始到 j<MAX 的 for 迴圈,逐列遍歷

  • 在其中,從 i=0 開始到 i<MAX 的巢狀 for 迴圈,遍歷第 j 列的所有元素。

  • 列印 arr[i][j]。

示例

#include <bits/stdc++.h>
using namespace std;
#define MAX 5
int main(){
   int arr[MAX][MAX] = { {1,2,3,4,5},{6,7,8,9,0},{5,4,3,2,1},{0,0,0,0,0},{8,9,7,6,1}};
   int i, j;
   cout<<"Row Major Traversal "<<endl;
   for(i=0;i<MAX;i++){
      cout<<endl;
      for(j=0;j<MAX;j++){
         cout<<" "<<arr[i][j];
      }
   }
   cout<<endl<<endl;
   cout<<"Column Major Traversal "<<endl;
   for(j=0;j<MAX;j++){
      cout<<endl;
      for(j=0;j<MAX;j++){
         cout<<" "<<arr[j][i];
      }
   }
   return 0;
}

輸出

如果我們執行上面的程式碼,它將生成以下輸出

Row Major Traversal
1 2 3 4 5
6 7 8 9 0
5 4 3 2 1
0 0 0 0 0
8 9 7 6 1
Column Major Traversal
6 5 0 8 3 2 7 6 4

更新於: 2021-11-03

4K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告