如何在访问数组2次以查找用户提供的数字序列中的最大数字时,减少访问数组的时间,
int i=0;
int max = -1;
int a_i = -1;
for (i=0; i<length; i++)
{
a_i = array(a,i);
if (a_i > max)
{
max = a_i;
}
return max;
完整代码on pastebin
任何帮助表示感谢。
答案 0 :(得分:1)
你不能,你必须迭代每个项目,因为你没有关于数组的信息。
如果您在
之前失去一些时间,则可以减少阅读时的访问量使用数组,您需要O(n)
来插入(每个)和O(n)
以找到最小值
如果你真正想要的是减少在find函数中花费的时间,
您可以使用minimum heap,插入O(n log(n))
会产生一些开销,但只需要O(1)
进行搜索。
您也可以在搜索之前对数组进行排序,这可以是O(n log n)