【问题标题】:Time complexity of reursion method that reverses array反转数组的递归方法的时间复杂度
【发布时间】:2018-04-14 09:21:12
【问题描述】:

我正在解决一个问题,我必须递归地反转数组中的整数。

public int[] reverse(int[] A, int i){
    if(i = A){
        return;
    }
}

【问题讨论】:

  • 我觉得也是 O(n/2),你去掉常数“1/2”得到 O(n)。
  • 如果你把它分解得足够多,每一步总是1。事实上,你总是取其中的n/2(它随着n增长),这使它成为O(n)。

标签: java arrays recursion


【解决方案1】:

【讨论】:

  • 嗯,这很简短,我会赞成,因为你用的词比我少哈哈
【解决方案2】:

大 O 是关于比例/大小的,所以 O(n/2) == O(n)(阅读:n 的顺序)。

每次调用该方法时,它都会在恒定时间内运行(因为它会执行恒定数量的操作),因此每次方法运行时它都会在 O(1) 中运行,但我们会测量程序执行的总顺序,并且由于用n > 1调用方法会启动一组递归调用,所以我们说程序的总执行顺序是n => O(n)

【讨论】:

  • 嗯,这是一个专家回答的例子,这是一个加分项
【解决方案3】:

您的算法是 O(N),因为 O(N) 描述了一种算法,其性能将线性增长并且与输入数据集的大小成正比,在您的情况下,除了您将大小除以 2,如果您有一个包含 n 个元素的数组,它需要 n/2,如果你有 n+500 个元素,它将需要 n+500/2,这意味着 /2 是恒定的,并且算法将线性增长。这意味着它直接取决于 N 有多长。

【讨论】:

    猜你喜欢
    • 2017-07-15
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2018-08-18
    相关资源
    最近更新 更多