इस समस्या में, हम 2-डी सरणी के 1-डी सरणी में रूपांतरण को समझेंगे। हम देखेंगे कि 2-डी सरणी के तत्वों को 1-डी सरणी में कैसे संग्रहीत किया जाए।
यहां, 1-डी सरणी का आकार 2-डी सरणी में तत्वों की कुल संख्या के समान है जो n*m है।
प्रोग्रामिंग में 2-डी सरणी को 1-डी सरणी में स्टोर करने के दो तरीके हैं। वे हैं-
- पंक्ति मेजर
- कॉलम मेजर
पंक्ति मेजर: पंक्ति प्रमुख में, एक पंक्ति के सभी तत्वों को एक साथ संग्रहीत किया जाता है और फिर यह अगली पंक्ति में चला जाता है।
यदि nXm आकार के 2-डी सरणी के एक तत्व में एक अनुक्रमणिका (i, j) 1-D सरणी में संग्रहीत है, तो 1-D सरणी में इसकी अनुक्रमणिका है
(j) + (i)*m
कॉलम मेजर: कॉलम मेजर में, एक कॉलम के सभी तत्वों को एक साथ संग्रहित किया जाता है और फिर अगले कॉलम को ट्रेस किया जाता है।
यदि nXm आकार के 2-डी सरणी के एक तत्व में एक अनुक्रमणिका (i, j) 1-D सरणी में संग्रहीत है, तो 1-D सरणी में इसकी अनुक्रमणिका है
(i) + (j)*n
समस्या को समझने के लिए एक उदाहरण देखते हैं,
इनपुट: n =3, m =5, (i,j) =(0, 2)
आउटपुट: पंक्ति-प्रमुख =
स्तंभ-प्रमुख =
स्पष्टीकरण:
पंक्ति-प्रमुख =2 + 0*3 =3
कर्नल-मेजर =0 + 2*5 =10
2D से 1-D में रूपांतरण को दर्शाने वाला प्रोग्राम,
उदाहरण
#include<iostream> using namespace std; int main() { int n = 3; int m = 5; int grid[n][m] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15}}; int i = 0; int j = 2; int rowMajorIndex = i*n + j; cout<<"Index of element at index (0, 2) in 1-D array using row-major is "<<rowMajorIndex<<endl; int colMajorIndex = i + j*m; cout<<"Index of element at index (0, 2) in 1-D array using column-major is "<<colMajorIndex<<endl; return 0; }
आउटपुट -
Index of element at index (0, 2) in 1-D array using row-major is 2 Index of element at index (0, 2) in 1-D array using column-major is 10