关于数组或集合排序问题

需要用java解决图片所述的问题。请大佬帮忙。

 

public class Test {
    public static void main(String[] args) {
        int[] a = new int[28];
        for(int i=0;i<28;i++){
            a[i] = i+1;
        }

        //通过循环左移达到最后的效果
        for(int i=7;i>1;i--){
            for(int j=3;j>=1;j--){
                zy(a,i*j-1,4*i+j-5);
            }
        }

        for(int i=0;i<=27;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
    }

    /**
     * 对bg到ed这段数组进行左移一位,bg移到ed
     * @param a
     * @param bg
     * @param ed
     */
    public static void zy(int[] a, int bg, int ed){
        int temp = a[bg];
        for(int i=bg;i<=ed;i++){
            a[i] = a[i+1];
        }
        a[ed] = temp;
    }
}

 

双层for循环

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList();
        for(int i=0;i<28;i++){
            list.add(i+1);//构造需要的数组
        }
        List<List<Integer>> list1 = new ArrayList();

        for(int i=0;i<7;i++){ //分7组
            List<Integer> list2 = new ArrayList();
            for(int j=0;j<4;j++){ //每组4个
                list2.add(list.get(i+j*7)); //间隔7个,所以乘以7
            }
            list1.add(list2);
        }

        System.out.println(list1); //打印最后的结果
    }
}

 

谢谢回答,如果只允许在一个数组里面(不新建数组),有没有可能实现?

点赞