下面的Python代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。
def find_max(nums):
if not nums:
raise ValueError("输入数组不能为空")
if len(nums) == 1:
return nums[0]
mid = len(nums) // 2
return max(
find_max(nums[:mid]),
find_max(nums[mid:])
)
print(find_max([1,2,2,11,21,1,2,3]))
本题的 find_max() 函数采用分治算法
和上上题的 find_max() 函数相比,本题 find_max() 运行效率相对较低,因为需要分配额外的内存空间,用以存储nums的切片结果
和上上题的 find_max() 函数相比,本题 find_max() 的空间复杂度与之相同,不需要额外的存储资源
本题的 find_max() 的时间复杂度为 O(n log n)