इस समस्या में, हम 2-D सरणी को 1-D सरणी में बदलने को समझेंगे। हम देखेंगे कि 2-D सरणी के तत्वों को 1-D सरणी में कैसे संग्रहीत किया जाए।
यहां, 1-D सरणी का आकार 2-D सरणी में कुल तत्वों की संख्या के बराबर होता है जो n*m है।
प्रोग्रामिंग में 2-D सरणी को 1-D सरणी में संग्रहीत करने के दो तरीके हैं:
- रो मेजर (Row Major)
- कॉलम मेजर (Column Major)
रो मेजर: रो मेजर में, एक पंक्ति के सभी तत्व एक साथ संग्रहीत होते हैं फिर यह अगली पंक्ति पर जाता है।
यदि आकार n×m की 2-D सरणी के एक तत्व का सूचकांक (i, j) है, तो 1-D सरणी में इसका सूचकांक है:
(j) + (i)*m
कॉलम मेजर: कॉलम मेजर में, एक कॉलम के सभी तत्व एक साथ संग्रहीत होते हैं फिर अगले कॉलम को पार किया जाता है।
यदि आकार n×m की 2-D सरणी के एक तत्व का सूचकांक (i, j) है, तो 1-D सरणी में इसका सूचकांक है:
(i) + (j)*n
उदाहरण से समझते हैं:
इनपुट: n = 3, m = 5, (i,j) = (0, 2)
आउटपुट: रो-मेजर = 2, कॉलम-मेजर = 10
व्याख्या:
रो-मेजर = 2 + 0×3 = 2
कॉलम-मेजर = 0 + 2×5 = 10
2-D से 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 * m + j;
cout << "Index of element at index (0, 2) in 1-D array using row-major is " << rowMajorIndex << endl;
int colMajorIndex = i + j * n;
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