我必须从具有奇数维度的正方形二维数组中排序一些值。 我对如何以一种螺旋方形运动从中心出来的方式进行迭代感兴趣
很难用文字解释,所以我将以图形方式解释 数字代表从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。在这种情况下,你应该重新思考你的生活