【发布时间】:2015-07-29 01:22:31
【问题描述】:
我尝试使用我对分治算法的理解来找到整数数组中的最小元素。 我得到了正确的结果。 但我不确定这是否是使用分而治之算法的传统方式。 如果有任何其他比我尝试过的更智能的分治算法实现方法,请告诉我。
public static int smallest(int[] array){
int i = 0;
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[i] = array[index];
i++;
}
if(array.length > 1){
if(smallest(array1) < smallest(array2)){
return smallest(array1);
}else{
return smallest(array2);
}
}
return array[0];
}
【问题讨论】:
-
是的,这是实现这种分而治之算法的正确方法。如果您可以尝试在每次调用中不创建新数组,那就更好了。
-
查看之前的帖子以获得一些想法:stackoverflow.com/questions/14949982/…
-
@karthikthanx。我会按照您的建议尝试。
标签: java