【发布时间】:2012-12-12 00:32:56
【问题描述】:
练习递归和 D&C,一个常见的问题似乎是将数组:[a1,a2,a3..an,b1,b2,b3...bn] 转换为 [a1,b1,a2,b2,a3,b3...an,bn]
我解决了它如下(startA是as的开始,startB是bs的开始:
private static void shuffle(int[] a, int startA, int startB){
if(startA == startB)return;
int tmp = a[startB];
shift(a, startA + 1, startB);
a[startA + 1] = tmp;
shuffle(a, startA + 2, startB + 1);
}
private static void shift(int[] a, int start, int end) {
if(start >= end)return;
for(int i = end; i > start; i--){
a[i] = a[i - 1];
}
}
但我不确定运行时是什么。不是线性的吗?
【问题讨论】:
-
当你说运行时你的意思是时间复杂度,对吧?
-
@Keyser:是的
O(f(n))
标签: java algorithm recursion runtime divide-and-conquer