【问题标题】:time complexity for array insertion数组插入的时间复杂度
【发布时间】:2017-04-20 00:51:45
【问题描述】:

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

这里我希望时间复杂度为 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) 中。

【问题讨论】:

  • 它是 O(n)。你想要二分查找。是线性搜索。您可以在元素 后停止循环
  • 假设您参考此post 以了解如何计算时间复杂度。

标签: java arrays time-complexity runtime-compilation


【解决方案1】:

没有。

该代码迭代(最坏情况)数组中的所有值。如果值是随机插入的,则插入点将平均位于数组的中间。正如@LukeLee 指出的那样,当您找到该位置时,您不会break 循环,因此您将始终遍历每个可能的位置-所有N 个。

为了达到 O(logN) 的性能,您必须跳过大量比较。如果您的数组已订购,请查看binary search,

【讨论】:

  • 不幸的是,无论如何代码都会遍历所有元素。
猜你喜欢
  • 1970-01-01
  • 2022-11-23
  • 2021-05-30
  • 2013-11-18
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多