我必须从具有奇数维度的方形二维数组中对一些值进行排序。我对我将如何以一种从中心向外以一种螺旋方形运动的方式进行迭代感兴趣
很难用文字来解释,所以我将用图形解释数字表示从 0 到 arraylength*arraylength-1 的迭代状态(从 10 开始的数字是字母字符,因为我用完了数字)(所以 a = 10, b = 11, c = 12...)
像这样:
fghij
e456k
d307l
c218m
ba9on
如您所见,它以圆周运动从中心向外移动。当它填满一个圆圈时,它从外层向外开始(例如从1到2。或从8到9的步骤)
我认为这样开始是有意义的:
for (int i = 0; i < array.length()/2; i++)
for (int j = 0; i < i*8 || i == 0 && j == 0; j++)
....
由于 j 代表第 i 层中的字段数,您将围绕它进行迭代:第二层中的 i*8 有 1*8=8 个字段,第三层 2*8 = 16,第四层 3* 8 = 24 等等.. 除了中间只有一个
随意用任何编程语言回答 ;)... 除了 Fortran。在这种情况下,你应该重新思考你的生活