我正在编写函数来查找应在给定数组中插入目标值的位置。我们假设数组具有不同的值,并按升序排序。
这里我希望时间复杂度为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)。
答案 0 :(得分:1)
没有
该代码迭代(最坏情况)数组中的所有值。如果随机插入值,则插入点将平均为数组的中间位置。当你找到位置时,你没有break
循环,正如@LukeLee所指出的那样,所以你将总是迭代每个可能的位置 - 所有N个。
为了获得O(logN)性能,您将不得不跳过大量的比较。如果您的阵列已订购,请查看binary search,。