有n个整数,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数

题目:有n个整数,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数

public class 第三十六题数组向后移m个位置 {
    public static void main(String[] args) {
        int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
        int n = a.length;
        System.out.print("请输入向后移动的位数: ");
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        in.close();
        if (m < 1 ) {
            System.out.println("输入的范围错误");
        } else if(m > a.length){
                m = m % n;
                move(a, m);
        } else { 
            move(a, m);
        }
        
        System.out.println(Arrays.toString(a));
    }

    public static void move(int[] a,int m) {
        int n = a.length;
        int[] b = new int[n-m];
        int len = n - m; //需要挪动的长度
        //保存最后n-m个数字
        int j = 0;
        for(int i = m; i < n; i++,j++) {
            b[j] = a[i];
        }
        //把前面的m个向后移动
        for(int i=0; i < m; i++) {
            a[i+len] = a[i];
        }
        //把保存的数字拷贝的数组前面
        for(int k = 0; k < len; k++) {
            a[k] = b[k];
        }
    }
}

 

posted @ 2019-05-30 22:47  何茫然zju  阅读(3992)  评论(1编辑  收藏  举报