A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马王宁 中级黑马   /  2012-12-6 16:20  /  1736 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何在不开辟新空间的情况下,将数组的元素往前移n个位置?
例如:
   移动前: 1 2 3 4 5 6 7 8 9
  移动后:  5 6 7 8 9 1 2 3 4

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览


import java.util.Scanner;

public class Array {
        private static Scanner sca;
        public static void main(String[] args) {
                int [] arr={1,2,3,4,5,6,7,8,9,10};
                System.out.println("Enter the number of digit you want to put forward:");
                int n;
                sca = new Scanner(System.in);
                n=sca.nextInt();
               
                int len=arr.length;
                reverse(arr,0,n-1);
                reverse(arr,4,len-1);
                reverse(arr,0,len-1);
                for(int i=0;i<len;i++)
                {
                        System.out.println(arr[i]);
                }
               
               
        }
        public static void reverse(int []arr,int start,int end)
        {
        /*        for(int i=start;i<(start+end);i++)
                {
                        int temp=0;
                        temp=arr[i];
                        a
                }*/

                while(start<=(start+end)/2)
                {
                        int temp;
                        temp=arr[start];
                        arr[start]=arr[end];
                        arr[end]=temp;
                        start++;
                        end--;
                       
                       
                       
                }
        }

}
回复 使用道具 举报


import java.util.Scanner;

public class Array {
        public static void main(String[] args) {
                int [] arr={1,2,3,4,5,6,7,8,9};
                System.out.println("输入想要往前移动的距离:");
                int n;
                Scanner  sca = new Scanner(System.in);
                n=sca.nextInt();
               
                int len=arr.length;
                reverse(arr,0,n-1);
                reverse(arr,4,len-1);
                reverse(arr,0,len-1);
                for(int i=0;i<len;i++)
                {
                        System.out.print(arr[i]+" ");
                }
               
               
        }
        public static void reverse(int []arr,int start,int end)
        {
       
                while(start<=(start+end)/2)
                {
                        int temp;
                        temp=arr[start];
                        arr[start]=arr[end];
                        arr[end]=temp;
                        start++;
                        end--;
                       
                       
                       
                }
        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马