【发布时间】:2018-08-08 14:59:13
【问题描述】:
该算法在 Big-O 中的运行时间是多少,我如何将其转换为迭代算法?
public static int RecursiveMaxOfArray(int[] array) {
int array1[] = new int[array.length/2];
int array2[] = new int[array.length - (array.length/2)];
for (int index = 0; index < array.length/2 ; index++) {
array1[index] = array[index];
}
for (int index = array.length/2; index < array.length; index++) {
array2[index - array.length/2] = array[index] ;
}
if (array.length > 1) {
if(RecursiveMaxOfArray(array1) > RecursiveMaxOfArray(array2)) {
return RecursiveMaxOfArray(array1) ;
}
else {
return RecursiveMaxOfArray(array2) ;
}
}
return array[0] ;
}
【问题讨论】:
-
你做了什么分析?
-
我写了分治算法,但我不知道 Big-O 中的运行时间,以及如何转换为迭代算法
-
返回时为什么要第二次拨打
RecursiveMaxOfArray?只需缓存返回结果并返回 that. -
数组排序了吗?
标签: algorithm recursion iteration big-o