ภาพรวม
เมทริกซ์สามารถเรียงลำดับได้สองวิธี: แบบแถวต่อแถว (Row-major) เข้าถึงแต่ละแถวตามลำดับ ตัวอิลิเมนต์ในแถวจากดัชนี 0 ถึงดัชนีสุดท้าย ส่วนแบบคอลัมน์ต่อคอลัมน์ (Column-major) เข้าถึงจากคอลัมน์แรกถึงคอลัมน์สุดท้ายตามลำดับ
ในเมทริกซ์ 2D M[i][j] ดัชนี i แทนแถว j แทนคอลัมน์ สำหรับ Row-major เริ่มจาก i=0 แถวแรก 0≤j<ดัชนีสุดท้าย i=1 แถวที่สอง ... i=แถวสุดท้าย สำหรับ Column-major เริ่มจาก j=0 คอลัมน์แรก 0≤i<ดัชนีสุดท้าย j=1 คอลัมน์ที่สอง ... j=คอลัมน์สุดท้าย ลำดับดัชนีในอาร์เรย์ 2D 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 สองชั้นสำหรับพิมพ์เมทริกซ์ 2D แบบแถวต่อแถวและคอลัมน์ต่อคอลัมน์
- รับอาร์เรย์อินพุต
arr[][] - ตัวแปร
iและjเป็นดัชนีแถวและคอลัมน์ - Row-major: ลูปนอก i=0 ถึง MAX-1 ลูปใน j=0 ถึง MAX-1 พิมพ์
arr[i][j] - Column-major: ลูปนอก j=0 ถึง MAX-1 ลูปใน i=0 ถึง MAX-1 พิมพ์
arr[i][j]
ตัวอย่างโค้ด C++
#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(i = 0; i < MAX; i++){
cout << " " << arr[i][j];
}
}
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 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