今天朋友去面试看到一个算法题,求解

如题,完全没思路啊orz求指教,按照题目推测似乎是一个两个数之间距离为自身进行排序的算法,但是具体实现完全没思路,实在不行求个算法名也好啊orz图片说明

public class Test {
int n = 4;
int[] arr = new int[2*n];
public void init(){//初始化

for(int i = 0; i<2*n; i++){
arr[i] = -1;
}
}
public void sort(int g){
for(int i = 0; i<2*n; i++){
if(arr[i]==-1){
if(i+g+1<2*n&&arr[i+g+1]==-1){
arr[i]=g;
arr[i+g+1]=g;
if(g==n){
for(int j=0; j<2*n; j++){
System.out.print(arr[j]+" ");

}
System.out.println();
}
else{
sort(g+1);
}
arr[i]=-1;
arr[i+g+1]=-1;
}
}
}
}
// 测试
public static void main(String[] args) {
Test t = new Test();
t.init();
t.sort(1);
}

}


图片说明

我觉得不能自动打印,因为当n=5时,就找不出来这样的数列了