黑马程序员技术交流社区

标题: java如何实现数组的左移? [打印本页]

作者: 李龙    时间: 2011-7-29 15:47
标题: java如何实现数组的左移?
java如何实现数组的左移?{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的为什么?
作者: 匿名    时间: 2011-7-29 22:24
数组使用的是顺序存储方式,就注定他只是查找快速而已,你硬是要那他移来移去的真的是很没效率,还不如使用list直接add,remove那多爽啊。
作者: 匿名    时间: 2011-7-30 10:22
第一:{6,5,4,3,2,1}左移一位后,5~1全都左进一位,6补到数组的末尾,得到{5,4,3,2,1,6},同理,再移动一位得到{4,3,2,1,6,5}了。
第二:如果楼主是因为  不知道数组左移是怎么回事  而不知道如何编代码的话,那么估计你现在应该会了。那么我告诉你,这道题和软考的一道题比较相似,另外有两个要求如下:
1不允许另外申请数组空间,但可以申请少许变量
2不允许采用每次左移
第三:如果还不会编代码的话可以回复我
作者: 李龙    时间: 2011-7-30 11:04
标题: 回复 藤椅 的帖子
谢谢解答!现在会了!1,2楼都感谢!
作者: 匿名    时间: 2011-7-30 13:47
我是用借用StringBuffer来实现你说的数组左移循环,如果能用较简单经典的算法实现会很好,但是我想了半天没想出来,数组有固定长度,用算法的确是不容易实现,要不就要增加额外的变量,如果移动的元素个数少还行,多的话,需要增加较多额外变量[code]public class ArrayPush {
        public static void main(String[] args) {
                  int[] s=new int[]{4,3,2,1,5,6};
                  int n=2;   //移动的元素个数
                  StringBuffer sf=new StringBuffer();
                  //将前s.length-n个元素加入StringBuffer中
                  for(int i=0;i<s.length-n;i++)
                  {
                          sf.append(s[i]);
                  }
                  //从数组S的最后一个元素开始倒着逐个取元素插到StringBuffer的最前面,共取n个
                  for(int i=1;i<=n;i++)  
                  sf.insert(0, s[s.length-i]);
                  //将StringBuffer中的字符转换成整数放到整数数组s中
                  for(int i=0;i<sf.length();i++)
                  {
                          s[i]=(int)sf.charAt(i)-48;
                          System.out.print(s[i]);
                  }
       
        }
}[/code]
作者: 匿名    时间: 2011-7-30 16:11
标题: 回复 报纸 的帖子
回复楼上!数组是有固定长度,Vector 类可以实现可增长的对象数组。这样能解决数组有固定长度的问题。
另外,谢谢你的回答!
作者: 匿名    时间: 2011-7-30 21:36
恩  这我知道,我只是针对你提的问题思考了一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2