论坛首页 综合技术论坛

考研数据结构

浏览 4352 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-09-25   最后修改:2013-09-30
数组int[] s={4,3,8,9,6,7,1,3,0}
怎样用尽可能高效算法把数组前3个数据和后6个数据倒置,结果为{9,6,7,1,3,0,4,3,8}??


注:1:数据为随机数,无规律,此数据为我随便列举的9个数
    2:3是我随便说的一个界限,也可以是前4个与后五个等。反正就是把数组分为2部分就 行, 每部分最少为一个数
    3:空间复杂度为1
   发表时间:2013-09-29  
public static int[] arrange_array(int index, int[] ary) {
        int i = 0, j = 0;
        int[] rs = new int[ary.length];
        for (int k = index; k < ary.length + index; k++) {
            rs[i++] = k < ary.length ? ary[k] : ary[j++];
        }
        return rs;
    }
0 请登录后投票
   发表时间:2013-10-01  
可以参考jdk Arrays的实现,对于任意一个数组array,给定一个n(0<n<array.length)要想实现楼主描述的效果,操作步骤如下:
1. 将原数组分为两部分,界限是array.length-n,即0-array.length-n-1为一部分,剩余的为另一部分,将两部分的数组分别reverse(元素对调),其结果不妨设为newArray
2. 对新的数组newArray,在进行一次分段,以0-n-1为一部分,剩余的为另外一部分,接着对两个分段的数组进行reverse操作~
OK,经过以上两次分组,2次分别reverse操作,看下是否是你需要的结果。(懒人,具体代码实现就不帮你写了。)
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics