如何最小化阵列访问次数

时间:2012-05-04 15:30:49

标签: objective-c c arrays for-loop while-loop

如何在访问数组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

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

  • 简短回答

你不能,你必须迭代每个项目,因为你没有关于数组的信息。

  • 答案很长

如果您在

之前失去一些时间,则可以减少阅读时的访问量

使用数组,您需要O(n)来插入(每个)和O(n)以找到最小值

如果你真正想要的是减少在find函数中花费的时间, 您可以使用minimum heap,插入O(n log(n))会产生一些开销,但只需要O(1)进行搜索。

您也可以在搜索之前对数组进行排序,这可以是O(n log n)