यह एल्गोरिदम ऐरे के तत्वों को सर्पिल तरीके से प्रिंट करने के लिए उपयोग किया जाता है। सबसे पहले पहली पंक्ति से शुरू करके, पूरी सामग्री प्रिंट करें और फिर प्रिंट करने के लिए अंतिम कॉलम का पालन करें, फिर अंतिम पंक्ति और इसी तरह, इस प्रकार यह तत्वों को सर्पिल फैशन में प्रिंट करता है।
इस एल्गोरिदम की टाइम कॉम्प्लेक्सिटी O(MN) है, जहां M पंक्तियों की संख्या है और N कॉलम की संख्या है।
इनपुट और आउटपुट
इनपुट: मैट्रिक्स: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 आउटपुट: सर्पिल रूप में ऐरे की सामग्री: 1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16
एल्गोरिदम
dispSpiral(mat, m, n)
इनपुट: मैट्रिक्स mat, पंक्ति और कॉलम m और n।
आउटपुट: मैट्रिक्स के तत्वों को सर्पिल तरीके से प्रिंट करें।
Begin
currRow := 0 and currCol := 0
while currRow and currCol मैट्रिक्स रेंज में हैं, do
for i in range currCol to n-1, do
display mat[currRow, i]
done
increase currRow by 1
for i in range currRow to m-1, do
display mat[i, n-1]
done
decrease n by 1
if currRow < m, then
for i := n-1 down to currCol, do
display mat[m-1, i]
done
decrease m by 1
if currCol < n, then
for i := m-1 down to currRow, do
display mat[i, currCol]
done
increase currCol by 1
done
Endउदाहरण (C++)
#include#define ROW 3 #define COL 6 using namespace std; int array[ROW][COL] = { {1, 2, 3, 4, 5, 6}, {7, 8, 9, 10, 11, 12}, {13, 14, 15, 16, 17, 18} }; void dispSpiral(int m, int n) { int i, currRow = 0, currCol = 0; while (currRow < ROW && currCol < COL) { for (i = currCol; i < n; i++) { //पहली पंक्ति को सामान्य रूप से प्रिंट करें cout << array[currRow][i] << " "; } currRow++; //अगली पंक्ति की ओर इंगित करें for (i = currRow; i < m; ++i) { //अंतिम कॉलम प्रिंट करें cout << array[i][n-1] << " "; } n--; //n-1वें कॉलम को वर्तमान अंतिम कॉलम के रूप में सेट करें if (currRow < m) { //जब currRow रेंज में हो, अंतिम पंक्ति प्रिंट करें for (i = n-1; i >= currCol; --i) { cout << array[m-1][i] << " "; } m--; //पंक्ति रेंज घटाएं } if (currCol < n) { //जब currCol रेंज में हो, पहली कॉलम प्रिंट करें for (i = m-1; i >= currRow; --i) { cout << array[i][currCol] << " "; } currCol++; } } } int main() { dispSpiral(ROW, COL); }
आउटपुट
1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16