浏览 4352 次
锁定老帖子 主题:考研数据结构
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-09-25
最后修改:2013-09-30
怎样用尽可能高效算法把数组前3个数据和后6个数据倒置,结果为{9,6,7,1,3,0,4,3,8}?? 注:1:数据为随机数,无规律,此数据为我随便列举的9个数 2:3是我随便说的一个界限,也可以是前4个与后五个等。反正就是把数组分为2部分就 行, 每部分最少为一个数 3:空间复杂度为1 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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; } |
|
返回顶楼 | |
发表时间: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操作,看下是否是你需要的结果。(懒人,具体代码实现就不帮你写了。) |
|
返回顶楼 | |