如果我使用java中的内置函数,我必须考虑运行时间或者我应该将它们视为恒定时间。以下函数的时间复杂度
def int findMax(int [] a)
{
a.Arrays.sort();
n=a.length;
return a[n-1];
}
答案 0 :(得分:1)
这里几乎所有的工作都是通过sort()算法完成的。对于排序数组,Java使用Quicksort,它具有O(n log n)平均值和O(n ^ 2)最差情况下的性能。
来自sort()的Java文档:
实施说明:排序算法是Vladimir Yaroslavskiy,Jon Bentley和Joshua Bloch的双枢轴快速算法。该算法在许多数据集上提供O(n log(n))性能,导致其他快速排序降级为二次性能,并且通常比传统(单枢轴)Quicksort实现更快。
鉴于您的问题没有任何用例,以及您对我的回答的评论,我觉得我必须指出这是过早优化的典型例子。您正在寻找一个简单方法的数学复杂性,而没有任何迹象表明此方法将占您程序使用的CPU时间的任何重要部分。鉴于您的实现效率非常低,尤其如此:迭代数组并存储最高值将在O(n)中执行。