算法:给定一个包含 m x n 个元素的矩阵(即:m行n列的矩阵),按照螺旋顺序打印出矩阵中的所有元素。

示例:给定如下矩阵
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
则最终打印出的顺序为:1, 2, 3, 6, 9, 8, 7, 4, 5

 1 --[[
 2     给定一个包含 m x n 个元素的矩阵(即:m行n列的矩阵),按照螺旋顺序打印出矩阵中的所有元素。
 3     示例:给定如下矩阵
 4     [1, 2, 3]
 5     [4, 5, 6]
 6     [7, 8, 9]
 7     则最终打印出的顺序为:1, 2, 3, 6, 9, 8, 7, 4, 5
 8 --]]
 9 
10 function traversal_print(data)
11     
12     local row_max     = #data;        -- max row
13     local col_max     = #(data[1]);    -- max column
14     
15     local row         = 1;
16     local col        = 1;
17     local row_end    = row_max;
18     local col_end    = col_max;
19     
20     local begin_time= os.clock();
21     
22     local temp         = 0;
23     while (row <= row_end) and (col <= col_end) do
24         for temp = col, col_end do
25             print(data[row][temp]);
26         end
27 
28         if row_end > row then
29             for temp = row + 1, row_end do
30                 print(data[temp][col_end]);
31             end
32         end
33 
34         if (col_end > col) and (row_end > row) then
35             for temp = col_end - 1, col, -1 do
36                 print(data[row_end][temp]);
37             end
38         end
39 
40         if (row_end - 1 > row) and (col_end > col) then
41             for temp = row_end - 1, row + 1, -1 do
42                 print(data[temp][col]);
43             end
44         end
45 
46         if (row_end - row >= 0) and (col_end - col >= 0) then
47             row     = row + 1;
48             row_end = row_end - 1;
49             col     = col + 1;
50             col_end = col_end - 1;
51         end
52     end
53     
54     local elaplsed_time = os.clock() - begin_time;
55     print("-- total elasped: "..elaplsed_time.." --"); 
56 end
57 
58 --[[--]]
59 local _data        = {
60                       {1, 2, 3},
61                       {4, 5, 6},
62                       {7, 8, 9}
63                    };
64 
65 
66 --[[
67 local _data        = {
68                       {1, 2, 3}
69                    };
70 --]]
71                    
72 --[[
73 local _data        = {
74                       {1},
75                       {4},
76                       {7}
77                    };
78 --]]
79 
80 traversal_print(_data);
Lua实现版本

相关文章: