作者PsMonkey (痞子军团团长)
看板CSSE
标题Re: permutation algorithm
时间Fri Nov 17 03:38:45 2006
※ 引述《jeunder ()》之铭言:
: 请教大家一个问题.
: 有一个阵列 x[2N] 要将其内容根据某个排列规则做 permutation.
: 规则如下:
: 就是将 x 的偶数项依序放到 x[0 ~ N-1],
: 将 x 的奇数项依序放到 x[N ~ 2N-1].
: 希望能够做到时间复杂度为 O(N), 这显然很容易办到.
: 但是我又希望空间复杂度能够是 O(1), 也就是不可以有随 N 而变大的暂存变数.
: 这是否有可能办到?
: 感觉上似乎和离散数学里面的 permutation group 有关?
: 想请教大家的想法. 谢谢. :)
我不会离散数学 T___T
不过,在存取阵列的时候多包一层就啥事情都没了
class foo{
private int x[] = new int[2*n];
//普通的取得 element
public int getElement(int i){
return x[i]
}
//特别的取得 element
public int getPermutationElement(int i){
if(i>n){ //奇数
return x[(i-n)*2+1];
}else{
return x[i*2];
}
}
}
=====
There is no spoon...
--
侃侃长论鲜窒碍 网站:
http://www.psmonkey.idv.tw
众目睽睽无心颤 个人版:telnet://legend.twbbs.org
茕居少聊常人事
杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.199.201
1F:推 ykjiang:如果每个元素都会用到,这个方法一样是 O(N) 11/17 11:28