इस एल्गोरिथम का उपयोग सरणी तत्वों को सर्पिल तरीके से प्रिंट करने के लिए किया जाता है। पहली पंक्ति से शुरू करते हुए, पूरी सामग्री को प्रिंट करें और फिर प्रिंट करने के लिए अंतिम कॉलम का पालन करें, फिर आखिरी पंक्ति और इसी तरह, यह सर्पिल फैशन में तत्वों को प्रिंट करता है।
इस एल्गोरिथ्म की समय जटिलता O(MN) है, M पंक्तियों की संख्या है और N स्तंभों की संख्या है।
इनपुट और आउटपुट
Input: The matrix: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Output: Contents of an array as the spiral form 1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11 15 16
एल्गोरिदम
dispSpiral(mat, m, n)
इनपुट: मैट्रिक्स मैट, रो और कॉलम m और n.
आउटपुट: मैट्रिक्स के तत्वों को सर्पिल तरीके से प्रिंट करें।
Begin currRow := 0 and currCol := 0 while currRow and currCol are in the matrix range, do for i in range currCol and n-1, do display mat[currRow, i] done increase currRow by 1 for i in range currRow and 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
उदाहरण
#include <iostream>
#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++) { //print the first row normally
cout << array[currRow][i]<<" ";
}
currRow++; //point to next row
for (i = currRow; i < m; ++i) { //Print the last column
cout << array[i][n-1]<<" ";
}
n--; //set the n-1th column is current last column
if ( currRow< m) { //when currRow is in the range, print the last row
for (i = n-1; i >= currCol; --i) {
cout << array[m-1][i]<<" ";
}
m--; //decrease the row range
}
if (currCol <n) { //when currCol is in the range, print the fist column
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