阵列插入的时间复杂度

时间:2017-04-20 00:51:45

标签: java arrays time-complexity runtime-compilation

我正在编写函数来查找应在给定数组中插入目标值的位置。我们假设数组具有不同的值,并按升序排序。

这里我希望时间复杂度为O(logN)。

public static int FindPosition(int[] Arr, int element)
{
    int i; int u=0;
    {
        for(i=0;i<Arr.length;i++)
        {
            if(element>Arr[i])
            u++;
        }
    }
    return u;
}

该程序的时间复杂度为O(log n)。 任何人都可以帮助我改变功能,所以它可以在o(log n)。

1 个答案:

答案 0 :(得分:1)

没有

该代码迭代(最坏情况)数组中的所有值。如果随机插入值,则插入点将平均为数组的中间位置。当你找到位置时,你没有break循环,正如@LukeLee所指出的那样,所以你将总是迭代每个可能的位置 - 所有N个。

为了获得O(logN)性能,您将不得不跳过大量的比较。如果您的阵列已订购,请查看binary search,