设计分治递归算法求一个数组中的最大元素值,并分析时间性能。
int Maxv(int a[ ],int low,int high)
/* low、high为数组第1和最后1个元素下标 */
我的建议是直接使用for循环找出最大值,这样的时间复杂度为O(n),因为要找出最大值无论如何都要把数组扫描一遍,所以O(n)复杂度就是最小的复杂度了,同时这样的空间复杂度为O(1),如果使用分治法的话,大概就是递归的将数组分为左右两个,然后返回左右两个数组中的最大值。这样的话,分数组的过程为O(logN),同时比较返回最大值的次数为O(n),一共需要的时间复杂度O(NlogN),空间复杂度应该为O(logN),所以直接使用for循环扫描更好,代码也较为简单,可读性更高。